diff --git a/devtip/.gitattributes b/devtip/.gitattributes
new file mode 100644
index 00000000..dfe07704
--- /dev/null
+++ b/devtip/.gitattributes
@@ -0,0 +1,2 @@
+# Auto detect text files and perform LF normalization
+* text=auto
diff --git a/devtip/.gitignore b/devtip/.gitignore
new file mode 100644
index 00000000..59e04893
--- /dev/null
+++ b/devtip/.gitignore
@@ -0,0 +1,42 @@
+node_modules
+.env
+packages/*/.env
+packages/*/.env.*
+
+# IntelliJ project files
+*.iml
+*.ipr
+*.iws
+.idea
+
+*.gitkeep
+
+# eclipse project file
+.settings/
+.classpath
+.project
+
+# NetBeans specific
+nbproject/private/
+build/
+nbbuild/
+dist/
+nbdist/
+nbactions.xml
+nb-configuration.xml
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# OS
+.DS_Store
+
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+
+PROPOSAL.md
diff --git a/devtip/LICENSE b/devtip/LICENSE
new file mode 100644
index 00000000..335ebbe7
--- /dev/null
+++ b/devtip/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 DevRel Team & Community
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/devtip/README.md b/devtip/README.md
new file mode 100644
index 00000000..be87dc34
--- /dev/null
+++ b/devtip/README.md
@@ -0,0 +1,197 @@
+
+
+
+
Celo Composer
+ Build, deploy, and iterate quickly on decentralized applications using Celo.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Table of Contents
+
+
+ About The Project
+
+
+
+
+
+ Usage
+ Roadmap
+ Contributing
+ License
+ Contact
+ Acknowledgments
+
+
+
+
+
+## About The Project
+
+Celo Composer allows you to quickly build, deploy, and iterate on decentralized applications using Celo. It provides a number of frameworks, examples, and Celo specific functionality to help you get started with your next dApp.
+
+(back to top )
+
+## Built With
+
+Celo Composer is built on Celo to make it simple to build dApps using a variety of front-end frameworks, and libraries.
+
+- [Celo](https://celo.org/)
+- [Solidity](https://docs.soliditylang.org/en/v0.8.19/)
+- [Next.js](https://nextjs.org/)
+- [React.js](https://reactjs.org/)
+- [Material UI](https://mui.com/)
+- [React Native](https://reactnative.dev/)
+- [Flutter](https://docs.flutter.dev/)
+- [React-celo](https://github.com/celo-org/react-celo/)
+- [Rainbowkit-celo](https://github.com/celo-org/rainbowkit-celo)
+
+(back to top )
+
+
+
+## Prerequisites
+
+- Node
+- Git (v2.38 or higher)
+
+## How to use Celo Composer
+
+The easiest way to start with Celo Composer is using `@celo/celo-composer`. This CLI tool lets you quickly start building dApps on Celo for multiple frameworks, including React (with either react-celo or rainbowkit-celo), React Native (w/o Expo), Flutter, and Angular. To get started, just run the following command, and follow the steps:
+
+```bash
+npx @celo/celo-composer@latest create
+```
+
+### Front-end framework
+
+
+
+### Web3 library (for react-app)
+
+
+
+### Smart contract framework
+
+
+
+### Subgraph
+
+
+
+### Name your dApp
+
+
+
+**_🔥Voila, you have a dApp ready to go. Voila, you have a dApp ready to go. Start building your dApp on Celo._**
+
+### Getting started
+
+Once your custom dApp has been created, just install dependencies, either with `yarn` or `npm i`, and run the respective script from the `package.json` file.
+## Supported Frameworks
+
+### React
+
+- Support for Website and Progressive Web Application.
+- Works with all major crypto wallets.
+
+Check [package readme](https://github.com/celo-org/celo-composer/blob/main/packages/react-app/README.md) to learn more about.
+
+### React Native
+
+- Out of the box config, just focus on buidl.
+- Support for Android and IOS.
+- Works with and without [Expo](https://expo.dev/).
+- Working example app included.
+
+Check [package readme](https://github.com/celo-org/celo-composer/blob/main/packages/react-native-app/README.md) to learn more about.
+
+### Flutter
+
+- One command to get started - Type `flutter run` to start development in your mobile phone.
+- Works with all major mobile crypto wallets.
+- Support for Android, IOS (Web, Windows, and Linux coming soon).
+- Working example app included.
+
+Check [package readme](https://github.com/celo-org/celo-composer/blob/main/packages/flutter-app/README.md) to learn more about.
+
+### Angular
+
+- Support for Website and Progressive Web Application.
+- Works with all major crypto wallets.
+
+Check [package readme](https://github.com/celo-org/celo-composer/blob/main/packages/angular-app/README.md) to learn more about.
+
+
+
+## 🔠Learning Solidity
+
+📕 Read the docs:
+
+- [Primitive Data Types](https://solidity-by-example.org/primitives/)
+- [Mappings](https://solidity-by-example.org/mapping/)
+- [Structs](https://solidity-by-example.org/structs/)
+- [Modifiers](https://solidity-by-example.org/function-modifier/)
+- [Events](https://solidity-by-example.org/events/)
+- [Inheritance](https://solidity-by-example.org/inheritance/)
+- [Payable](https://solidity-by-example.org/payable/)
+- [Fallback](https://solidity-by-example.org/fallback/)
+
+📧 Learn the [Solidity globals and units](https://solidity.readthedocs.io/en/v0.8.19/units-and-global-variables.html)
+
+## Support
+
+Join the Celo Discord server at . Reach out on the dedicated repo channel [here](https://discord.com/channels/600834479145353243/941003424298856448).
+
+
+
+## Roadmap
+
+See the [open issues](https://github.com/celo-org/celo-composer/issues) for a full list of proposed features (and known issues).
+
+(back to top )
+
+
+
+## Contributing
+
+We welcome contributions from the community.
+
+(back to top )
+
+## License
+
+Distributed under the MIT License. See `LICENSE.txt` for more information.
+
+
+## Contact
+
+- [@CeloDevs](https://twitter.com/CeloDevs)
+- [Discord](https://discord.com/invite/celo)
+
+(back to top )
diff --git a/devtip/netlify.toml b/devtip/netlify.toml
new file mode 100644
index 00000000..d14bf083
--- /dev/null
+++ b/devtip/netlify.toml
@@ -0,0 +1,12 @@
+# Settings in the [build] context are global and are applied to
+# all contexts unless otherwise overridden by more specific contexts.
+[build]
+ # Directory to change to before starting a build.
+ # This is where we will look for package.json/.nvmrc/etc.
+ # If not set, defaults to the root directory.
+ base = "/"
+ publish = "packages/react-app/.next"
+ command = "yarn build-ui"
+
+[[plugins]]
+package = "@netlify/plugin-nextjs"
\ No newline at end of file
diff --git a/devtip/package.json b/devtip/package.json
new file mode 100644
index 00000000..5dc67c25
--- /dev/null
+++ b/devtip/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "devtip",
+ "version": "1.0.0",
+ "description": "Custom Celo Composer project.",
+ "private": true,
+ "author": "Celo",
+ "license": "MIT",
+ "scripts": {
+ "react-app:dev": "yarn workspace @devtip/react-app dev",
+ "react-app:build": "yarn workspace @devtip/react-app build",
+ "react-app:start": "yarn workspace @devtip/react-app start",
+ "react-app:lint": "yarn workspace @devtip/react-app lint"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/celo-org/celo-composer.git"
+ },
+ "bugs": {
+ "url": "https://github.com/celo-org/celo-composer/issues"
+ },
+ "homepage": "https://github.com/celo-org/celo-composer/blob/main/README.md",
+ "workspaces": [
+ "packages/*"
+ ],
+ "keywords": [
+ "celo-composer",
+ "celo"
+ ]
+}
diff --git a/devtip/packages/react-app/.eslintrc.json b/devtip/packages/react-app/.eslintrc.json
new file mode 100644
index 00000000..bffb357a
--- /dev/null
+++ b/devtip/packages/react-app/.eslintrc.json
@@ -0,0 +1,3 @@
+{
+ "extends": "next/core-web-vitals"
+}
diff --git a/devtip/packages/react-app/.gitignore b/devtip/packages/react-app/.gitignore
new file mode 100644
index 00000000..c87c9b39
--- /dev/null
+++ b/devtip/packages/react-app/.gitignore
@@ -0,0 +1,36 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+.pnpm-debug.log*
+
+# local env files
+.env*.local
+
+# vercel
+.vercel
+
+# typescript
+*.tsbuildinfo
+next-env.d.ts
diff --git a/devtip/packages/react-app/README.md b/devtip/packages/react-app/README.md
new file mode 100644
index 00000000..e3181791
--- /dev/null
+++ b/devtip/packages/react-app/README.md
@@ -0,0 +1,39 @@
+# React Framework + NextJS | Celo Composer
+
+Celo Composer support React boilerplate template with TailwindCSS. This is a starter kit with no additional boilerplate code. It's a perfect starter kit to get your project started on Celo blockchain.
+
+## Setup & Installation
+
+```bash
+yarn
+```
+
+Run `yarn` or `npm install` to install all the required dependencies to run the dApp.
+
+> React + Tailwind CSS Template does not have any dependency on hardhat and truffle.
+> This starterkit does not include connection of Hardhat/Truffle with ReactJS. It's up to the user to integrate smart contract with ReactJS. This gives user more flexibily over the dApp.
+
+- To start the dApp, run the following command.
+
+```bash
+yarn react-dev
+```
+
+## Dependencies
+
+### Default
+- [Next.js](https://nextjs.org/) app framework
+- [TailwindCSS](https://tailwindcss.com/) for UI
+
+### Optional
+> On CLI setup you'll be able to select your favorive front-end web3 library to interact with the Celo blockchain:
+- [react-celo](https://www.npmjs.com/package/@celo/react-celo), a React hook library for managing access to Celo with a built-in headless modal system for connecting to your users wallet of choice.
+- [rainbowkit-celo](https://www.npmjs.com/package/@celo/rainbowkit-celo), a plugin to help rainbowkit developers support the CELO protocol faster.
+
+## Architecture
+
+- `/pages` includes the main application components (specifically `index.tsx` and `_app.tsx`)
+ - `_app.tsx` includes configuration
+ - `index.tsx` is the main page of the application
+- `/components` includes components that are rendered in `index.tsx`
+- `/public` includes static files
diff --git a/devtip/packages/react-app/abis/Accounts.json b/devtip/packages/react-app/abis/Accounts.json
new file mode 100644
index 00000000..da009fd7
--- /dev/null
+++ b/devtip/packages/react-app/abis/Accounts.json
@@ -0,0 +1,75401 @@
+{
+ "contractName": "Accounts",
+ "abi": [
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "test",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "AccountCreated",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes",
+ "name": "dataEncryptionKey",
+ "type": "bytes"
+ }
+ ],
+ "name": "AccountDataEncryptionKeySet",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "metadataURL",
+ "type": "string"
+ }
+ ],
+ "name": "AccountMetadataURLSet",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "name",
+ "type": "string"
+ }
+ ],
+ "name": "AccountNameSet",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "walletAddress",
+ "type": "address"
+ }
+ ],
+ "name": "AccountWalletAddressSet",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ }
+ ],
+ "name": "AttestationSignerAuthorized",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldSigner",
+ "type": "address"
+ }
+ ],
+ "name": "AttestationSignerRemoved",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldSigner",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "DefaultSignerRemoved",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "DefaultSignerSet",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldSigner",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "IndexedSignerRemoved",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "IndexedSignerSet",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldSigner",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "LegacySignerRemoved",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "LegacySignerSet",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes",
+ "name": "url",
+ "type": "bytes"
+ }
+ ],
+ "name": "OffchainStorageRootAdded",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes",
+ "name": "url",
+ "type": "bytes"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "index",
+ "type": "uint256"
+ }
+ ],
+ "name": "OffchainStorageRootRemoved",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousOwner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "OwnershipTransferred",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "beneficiary",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "fraction",
+ "type": "uint256"
+ }
+ ],
+ "name": "PaymentDelegationSet",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "registryAddress",
+ "type": "address"
+ }
+ ],
+ "name": "RegistrySet",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "SignerAuthorizationCompleted",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "SignerAuthorizationStarted",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "SignerAuthorized",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldSigner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "SignerRemoved",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ }
+ ],
+ "name": "ValidatorSignerAuthorized",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldSigner",
+ "type": "address"
+ }
+ ],
+ "name": "ValidatorSignerRemoved",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ }
+ ],
+ "name": "VoteSignerAuthorized",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "oldSigner",
+ "type": "address"
+ }
+ ],
+ "name": "VoteSignerRemoved",
+ "type": "event"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "EIP712_AUTHORIZE_SIGNER_TYPEHASH",
+ "outputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "authorizedBy",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "eip712DomainSeparator",
+ "outputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "initialized",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isOwner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "offchainStorageRoots",
+ "outputs": [
+ {
+ "internalType": "bytes",
+ "name": "",
+ "type": "bytes"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "owner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "registry",
+ "outputs": [
+ {
+ "internalType": "contract IRegistry",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "renounceOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "registryAddress",
+ "type": "address"
+ }
+ ],
+ "name": "setRegistry",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "transferOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "getVersionNumber",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "pure",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "registryAddress",
+ "type": "address"
+ }
+ ],
+ "name": "initialize",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "setEip712DomainSeparator",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "name",
+ "type": "string"
+ },
+ {
+ "internalType": "bytes",
+ "name": "dataEncryptionKey",
+ "type": "bytes"
+ },
+ {
+ "internalType": "address",
+ "name": "walletAddress",
+ "type": "address"
+ },
+ {
+ "internalType": "uint8",
+ "name": "v",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "r",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "s",
+ "type": "bytes32"
+ }
+ ],
+ "name": "setAccount",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "createAccount",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "name",
+ "type": "string"
+ }
+ ],
+ "name": "setName",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "walletAddress",
+ "type": "address"
+ },
+ {
+ "internalType": "uint8",
+ "name": "v",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "r",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "s",
+ "type": "bytes32"
+ }
+ ],
+ "name": "setWalletAddress",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "dataEncryptionKey",
+ "type": "bytes"
+ }
+ ],
+ "name": "setAccountDataEncryptionKey",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "metadataURL",
+ "type": "string"
+ }
+ ],
+ "name": "setMetadataURL",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "url",
+ "type": "bytes"
+ }
+ ],
+ "name": "addStorageRoot",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "index",
+ "type": "uint256"
+ }
+ ],
+ "name": "removeStorageRoot",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getOffchainStorageRoots",
+ "outputs": [
+ {
+ "internalType": "bytes",
+ "name": "",
+ "type": "bytes"
+ },
+ {
+ "internalType": "uint256[]",
+ "name": "",
+ "type": "uint256[]"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "beneficiary",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "fraction",
+ "type": "uint256"
+ }
+ ],
+ "name": "setPaymentDelegation",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "deletePaymentDelegation",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getPaymentDelegation",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "setIndexedSigner",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "uint8",
+ "name": "v",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "r",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "s",
+ "type": "bytes32"
+ }
+ ],
+ "name": "authorizeSignerWithSignature",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "internalType": "uint8",
+ "name": "v",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "r",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "s",
+ "type": "bytes32"
+ }
+ ],
+ "name": "authorizeVoteSigner",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "internalType": "uint8",
+ "name": "v",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "r",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "s",
+ "type": "bytes32"
+ }
+ ],
+ "name": "authorizeValidatorSigner",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "internalType": "uint8",
+ "name": "v",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "r",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "s",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes",
+ "name": "ecdsaPublicKey",
+ "type": "bytes"
+ }
+ ],
+ "name": "authorizeValidatorSignerWithPublicKey",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "internalType": "uint8",
+ "name": "v",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "r",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "s",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes",
+ "name": "ecdsaPublicKey",
+ "type": "bytes"
+ },
+ {
+ "internalType": "bytes",
+ "name": "blsPublicKey",
+ "type": "bytes"
+ },
+ {
+ "internalType": "bytes",
+ "name": "blsPop",
+ "type": "bytes"
+ }
+ ],
+ "name": "authorizeValidatorSignerWithKeys",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "internalType": "uint8",
+ "name": "v",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "r",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "s",
+ "type": "bytes32"
+ }
+ ],
+ "name": "authorizeAttestationSigner",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "authorizeSigner",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "completeSignerAuthorization",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_account",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "isLegacySigner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "isDefaultSigner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "isIndexedSigner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "isSigner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "removeDefaultSigner",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "removeIndexedSigner",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "removeSigner",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "removeVoteSigner",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "removeValidatorSigner",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "removeAttestationSigner",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ }
+ ],
+ "name": "attestationSignerToAccount",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ }
+ ],
+ "name": "validatorSignerToAccount",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ }
+ ],
+ "name": "voteSignerToAccount",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ }
+ ],
+ "name": "signerToAccount",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "isLegacyRole",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "pure",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "_account",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "getLegacySigner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "getDefaultSigner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "getIndexedSigner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getVoteSigner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getValidatorSigner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getAttestationSigner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "hasLegacySigner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "hasDefaultSigner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ }
+ ],
+ "name": "hasIndexedSigner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "role",
+ "type": "string"
+ }
+ ],
+ "name": "hasAuthorizedSigner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "hasAuthorizedVoteSigner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "hasAuthorizedValidatorSigner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "hasAuthorizedAttestationSigner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getName",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getMetadataURL",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address[]",
+ "name": "accountsToQuery",
+ "type": "address[]"
+ }
+ ],
+ "name": "batchGetMetadataURL",
+ "outputs": [
+ {
+ "internalType": "uint256[]",
+ "name": "",
+ "type": "uint256[]"
+ },
+ {
+ "internalType": "bytes",
+ "name": "",
+ "type": "bytes"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getDataEncryptionKey",
+ "outputs": [
+ {
+ "internalType": "bytes",
+ "name": "",
+ "type": "bytes"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "getWalletAddress",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "isAccount",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ }
+ ],
+ "name": "isAuthorizedSigner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "role",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "uint8",
+ "name": "v",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "r",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "s",
+ "type": "bytes32"
+ }
+ ],
+ "name": "getRoleAuthorizationSigner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ }
+ ],
+ "metadata": "{\"compiler\":{\"version\":\"0.5.13+commit.5b0b510c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"test\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AccountCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"dataEncryptionKey\",\"type\":\"bytes\"}],\"name\":\"AccountDataEncryptionKeySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"metadataURL\",\"type\":\"string\"}],\"name\":\"AccountMetadataURLSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"AccountNameSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"walletAddress\",\"type\":\"address\"}],\"name\":\"AccountWalletAddressSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"AttestationSignerAuthorized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldSigner\",\"type\":\"address\"}],\"name\":\"AttestationSignerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldSigner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"DefaultSignerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"DefaultSignerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldSigner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"IndexedSignerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"IndexedSignerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldSigner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"LegacySignerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"LegacySignerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"url\",\"type\":\"bytes\"}],\"name\":\"OffchainStorageRootAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"url\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"OffchainStorageRootRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fraction\",\"type\":\"uint256\"}],\"name\":\"PaymentDelegationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"registryAddress\",\"type\":\"address\"}],\"name\":\"RegistrySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"SignerAuthorizationCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"SignerAuthorizationStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"SignerAuthorized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldSigner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"SignerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"ValidatorSignerAuthorized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldSigner\",\"type\":\"address\"}],\"name\":\"ValidatorSignerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"VoteSignerAuthorized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldSigner\",\"type\":\"address\"}],\"name\":\"VoteSignerRemoved\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"EIP712_AUTHORIZE_SIGNER_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"url\",\"type\":\"bytes\"}],\"name\":\"addStorageRoot\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"attestationSignerToAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"authorizeAttestationSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"authorizeSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"authorizeSignerWithSignature\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"authorizeValidatorSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPop\",\"type\":\"bytes\"}],\"name\":\"authorizeValidatorSignerWithKeys\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"ecdsaPublicKey\",\"type\":\"bytes\"}],\"name\":\"authorizeValidatorSignerWithPublicKey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"authorizeVoteSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"authorizedBy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accountsToQuery\",\"type\":\"address[]\"}],\"name\":\"batchGetMetadataURL\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"completeSignerAuthorization\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"createAccount\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"deletePaymentDelegation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"eip712DomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAttestationSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getDataEncryptionKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getDefaultSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getIndexedSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getLegacySigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getMetadataURL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getOffchainStorageRoots\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getPaymentDelegation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"getRoleAuthorizationSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getValidatorSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getVersionNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getVoteSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getWalletAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasAuthorizedAttestationSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"role\",\"type\":\"string\"}],\"name\":\"hasAuthorizedSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasAuthorizedValidatorSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasAuthorizedVoteSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"hasDefaultSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"hasIndexedSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"hasLegacySigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"registryAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isAccount\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"isAuthorizedSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"isDefaultSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"isIndexedSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"isLegacyRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"isLegacySigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"isSigner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"offchainStorageRoots\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IRegistry\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"removeAttestationSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"removeDefaultSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"removeIndexedSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"removeSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"removeStorageRoot\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"removeValidatorSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"removeVoteSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"dataEncryptionKey\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"walletAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"setAccount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"dataEncryptionKey\",\"type\":\"bytes\"}],\"name\":\"setAccountDataEncryptionKey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"setEip712DomainSeparator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"setIndexedSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"metadataURL\",\"type\":\"string\"}],\"name\":\"setMetadataURL\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fraction\",\"type\":\"uint256\"}],\"name\":\"setPaymentDelegation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"registryAddress\",\"type\":\"address\"}],\"name\":\"setRegistry\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"walletAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"setWalletAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"signerToAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"validatorSignerToAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"voteSignerToAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"addStorageRoot(bytes)\":{\"params\":{\"url\":\"The URL pointing to the offchain storage root.\"}},\"attestationSignerToAccount(address)\":{\"details\":\"Fails if the `signer` is not an account or currently authorized attestation signer.\",\"params\":{\"signer\":\"The address of the account or currently authorized attestation signer.\"},\"return\":\"The associated account.\"},\"authorizeAttestationSigner(address,uint8,bytes32,bytes32)\":{\"details\":\"v, r, s constitute `signer`'s signature on `msg.sender`.\",\"params\":{\"r\":\"Output value r of the ECDSA signature.\",\"s\":\"Output value s of the ECDSA signature.\",\"signer\":\"The address of the signing key to authorize.\",\"v\":\"The recovery id of the incoming ECDSA signature.\"}},\"authorizeSigner(address,bytes32)\":{\"params\":{\"role\":\"The role to authorize signing for.\",\"signer\":\"The address of the signing key to authorize.\"}},\"authorizeSignerWithSignature(address,bytes32,uint8,bytes32,bytes32)\":{\"details\":\"v, r, s constitute `signer`'s EIP712 signature over `role`, `msg.sender` and `signer`.\",\"params\":{\"r\":\"Output value r of the ECDSA signature.\",\"role\":\"The role to authorize signing for.\",\"s\":\"Output value s of the ECDSA signature.\",\"signer\":\"The address of the signing key to authorize.\",\"v\":\"The recovery id of the incoming ECDSA signature.\"}},\"authorizeValidatorSigner(address,uint8,bytes32,bytes32)\":{\"details\":\"v, r, s constitute `signer`'s signature on `msg.sender`.\",\"params\":{\"r\":\"Output value r of the ECDSA signature.\",\"s\":\"Output value s of the ECDSA signature.\",\"signer\":\"The address of the signing key to authorize.\",\"v\":\"The recovery id of the incoming ECDSA signature.\"}},\"authorizeValidatorSignerWithKeys(address,uint8,bytes32,bytes32,bytes,bytes,bytes)\":{\"details\":\"v, r, s constitute `signer`'s signature on `msg.sender`.\",\"params\":{\"blsPop\":\"The BLS public key proof-of-possession, which consists of a signature on the account address. 48 bytes.\",\"blsPublicKey\":\"The BLS public key that the validator is using for consensus, should pass proof of possession. 96 bytes.\",\"ecdsaPublicKey\":\"The ECDSA public key corresponding to `signer`.\",\"r\":\"Output value r of the ECDSA signature.\",\"s\":\"Output value s of the ECDSA signature.\",\"signer\":\"The address of the signing key to authorize.\",\"v\":\"The recovery id of the incoming ECDSA signature.\"}},\"authorizeValidatorSignerWithPublicKey(address,uint8,bytes32,bytes32,bytes)\":{\"details\":\"v, r, s constitute `signer`'s signature on `msg.sender`.\",\"params\":{\"ecdsaPublicKey\":\"The ECDSA public key corresponding to `signer`.\",\"r\":\"Output value r of the ECDSA signature.\",\"s\":\"Output value s of the ECDSA signature.\",\"signer\":\"The address of the signing key to authorize.\",\"v\":\"The recovery id of the incoming ECDSA signature.\"}},\"authorizeVoteSigner(address,uint8,bytes32,bytes32)\":{\"details\":\"v, r, s constitute `signer`'s signature on `msg.sender`.\",\"params\":{\"r\":\"Output value r of the ECDSA signature.\",\"s\":\"Output value s of the ECDSA signature.\",\"signer\":\"The address of the signing key to authorize.\",\"v\":\"The recovery id of the incoming ECDSA signature.\"}},\"batchGetMetadataURL(address[])\":{\"params\":{\"accountsToQuery\":\"The addresses of the accounts to get the metadata for.\"},\"return\":\"(stringLengths[] - the length of each string in bytes data - all strings concatenated )\"},\"completeSignerAuthorization(address,bytes32)\":{\"params\":{\"account\":\"The address of account that authorized signing.\",\"role\":\"The role to finish authorizing for.\"}},\"constructor\":{\"params\":{\"test\":\"Set to true to skip implementation initialization\"}},\"createAccount()\":{\"return\":\"True if account creation succeeded.\"},\"getAttestationSigner(address)\":{\"params\":{\"account\":\"The address of the account.\"},\"return\":\"The address with which the account can sign attestations.\"},\"getDataEncryptionKey(address)\":{\"params\":{\"account\":\"The address of the account to get the key for\"},\"return\":\"dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed.\"},\"getDefaultSigner(address,bytes32)\":{\"params\":{\"account\":\"The address of the account.\",\"role\":\"The role of the signer.\"}},\"getIndexedSigner(address,bytes32)\":{\"params\":{\"account\":\"The address of the account.\",\"role\":\"The role of the signer.\"}},\"getLegacySigner(address,bytes32)\":{\"params\":{\"_account\":\"The address of the account.\",\"role\":\"The role of the signer.\"}},\"getMetadataURL(address)\":{\"params\":{\"account\":\"The address of the account to get the metadata for.\"},\"return\":\"metadataURL The URL to access the metadata.\"},\"getName(address)\":{\"params\":{\"account\":\"The address of the account to get the name for.\"},\"return\":\"name The name of the account.\"},\"getOffchainStorageRoots(address)\":{\"params\":{\"account\":\"The account whose storage roots to return.\"},\"return\":\"List of storage root URLs.\"},\"getPaymentDelegation(address)\":{\"params\":{\"account\":\"Account of the validator.\"},\"return\":\"Beneficiary address and fraction of payment delegated.\"},\"getRoleAuthorizationSigner(address,address,bytes32,uint8,bytes32,bytes32)\":{\"params\":{\"account\":\"The `account` property signed over in the EIP712 signature\",\"r\":\"Output value r of the ECDSA signature.\",\"role\":\"The `role` property signed over in the EIP712 signature\",\"s\":\"Output value s of the ECDSA signature.\",\"signer\":\"The `signer` property signed over in the EIP712 signature\",\"v\":\"The recovery id of the incoming ECDSA signature.\"},\"return\":\"The address that signed the provided role authorization.\"},\"getValidatorSigner(address)\":{\"params\":{\"account\":\"The address of the account.\"},\"return\":\"The address with which the account can register a validator or group.\"},\"getVersionNumber()\":{\"return\":\"The storage, major, minor, and patch version of the contract.\"},\"getVoteSigner(address)\":{\"params\":{\"account\":\"The address of the account.\"},\"return\":\"The address with which the account can sign votes.\"},\"getWalletAddress(address)\":{\"params\":{\"account\":\"The address of the account to get the wallet address for\"},\"return\":\"Wallet address\"},\"hasAuthorizedAttestationSigner(address)\":{\"params\":{\"account\":\"The address of the account.\"},\"return\":\"Whether the account has specified a dedicated attestation signer.\"},\"hasAuthorizedSigner(address,string)\":{\"details\":\"See `hasIndexedSigner` for more gas efficient call.\"},\"hasAuthorizedValidatorSigner(address)\":{\"params\":{\"account\":\"The address of the account.\"},\"return\":\"Whether the account has specified a dedicated validator signer.\"},\"hasAuthorizedVoteSigner(address)\":{\"params\":{\"account\":\"The address of the account.\"},\"return\":\"Whether the account has specified a dedicated vote signer.\"},\"initialize(address)\":{\"params\":{\"registryAddress\":\"The address of the registry core smart contract.\"}},\"isAccount(address)\":{\"params\":{\"account\":\"The address of the account\"},\"return\":\"Returns `true` if account exists. Returns `false` otherwise.\"},\"isAuthorizedSigner(address)\":{\"params\":{\"signer\":\"The possibly authorized address.\"},\"return\":\"Returns `true` if authorized. Returns `false` otherwise.\"},\"isDefaultSigner(address,address,bytes32)\":{\"params\":{\"account\":\"The address of account that authorized signing.\",\"role\":\"The role that has been authorized.\",\"signer\":\"The address of the signer.\"}},\"isIndexedSigner(address,address,bytes32)\":{\"params\":{\"account\":\"The address of account that authorized signing.\",\"role\":\"The role that has been authorized.\",\"signer\":\"The address of the signer.\"}},\"isLegacyRole(bytes32)\":{\"params\":{\"role\":\"The role to check\"}},\"isLegacySigner(address,address,bytes32)\":{\"params\":{\"_account\":\"The address of account that authorized signing.\",\"role\":\"The role that has been authorized.\",\"signer\":\"The address of the signer.\"}},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"isSigner(address,address,bytes32)\":{\"params\":{\"account\":\"The address of account that authorized signing.\",\"role\":\"The role that has been authorized.\",\"signer\":\"The address of the signer.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"removeDefaultSigner(bytes32)\":{\"params\":{\"role\":\"The role that has been authorized.\"}},\"removeIndexedSigner(bytes32)\":{\"params\":{\"role\":\"The role of the signer.\"}},\"removeSigner(address,bytes32)\":{\"params\":{\"role\":\"The role that has been authorized.\",\"signer\":\"The address of the signer.\"}},\"removeStorageRoot(uint256)\":{\"details\":\"The order of storage roots may change after this operation (the last storage root will be moved to `index`), be aware of this if removing multiple storage roots at a time.\",\"params\":{\"index\":\"The index of the storage root to be removed in the account's list of storage roots.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setAccount(string,bytes,address,uint8,bytes32,bytes32)\":{\"details\":\"v, r, s constitute `signer`'s signature on `msg.sender` (unless the wallet address is 0x0 or msg.sender).\",\"params\":{\"dataEncryptionKey\":\"secp256k1 public key for data encryption. Preferably compressed.\",\"name\":\"A string to set as the name of the account\",\"r\":\"Output value r of the ECDSA signature.\",\"s\":\"Output value s of the ECDSA signature.\",\"v\":\"The recovery id of the incoming ECDSA signature.\",\"walletAddress\":\"The wallet address to set for the account\"}},\"setAccountDataEncryptionKey(bytes)\":{\"params\":{\"dataEncryptionKey\":\"secp256k1 public key for data encryption. Preferably compressed.\"}},\"setIndexedSigner(address,bytes32)\":{\"params\":{\"role\":\"the role to register a default signer for\",\"signer\":\"the address to set as default\"}},\"setMetadataURL(string)\":{\"params\":{\"metadataURL\":\"The URL to access the metadata.\"}},\"setName(string)\":{\"params\":{\"name\":\"The name to set.\"}},\"setPaymentDelegation(address,uint256)\":{\"details\":\"Use `deletePaymentDelegation` to unset the payment delegation.\",\"params\":{\"beneficiary\":\"The address that should receive a portion of validator payments.\",\"fraction\":\"The fraction of the validator's payment that should be diverted to `beneficiary` every epoch, given as FixidityLib value. Must not be greater than 1.\"}},\"setRegistry(address)\":{\"params\":{\"registryAddress\":\"The address of a registry contract for routing to other contracts.\"}},\"setWalletAddress(address,uint8,bytes32,bytes32)\":{\"details\":\"Wallet address can be zero. This means that the owner of the wallet does not want to be paid directly without interaction, and instead wants users to contact them, using the data encryption key, and arrange a payment.v, r, s constitute `signer`'s signature on `msg.sender` (unless the wallet address is 0x0 or msg.sender).\",\"params\":{\"r\":\"Output value r of the ECDSA signature.\",\"s\":\"Output value s of the ECDSA signature.\",\"v\":\"The recovery id of the incoming ECDSA signature.\",\"walletAddress\":\"The wallet address to set for the account\"}},\"signerToAccount(address)\":{\"details\":\"Fails if the `signer` is not an account or previously authorized signer.\",\"params\":{\"signer\":\"The address of the account or previously authorized signer.\"},\"return\":\"The associated account.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"validatorSignerToAccount(address)\":{\"details\":\"Fails if the `signer` is not an account or currently authorized validator.\",\"params\":{\"signer\":\"The address of an account or currently authorized validator signer.\"},\"return\":\"The associated account.\"},\"voteSignerToAccount(address)\":{\"details\":\"Fails if the `signer` is not an account or currently authorized vote signer.\",\"params\":{\"signer\":\"The address of the account or currently authorized vote signer.\"},\"return\":\"The associated account.\"}}},\"userdoc\":{\"methods\":{\"addStorageRoot(bytes)\":{\"notice\":\"Adds a new CIP8 storage root.\"},\"attestationSignerToAccount(address)\":{\"notice\":\"Returns the account associated with `signer`.\"},\"authorizeAttestationSigner(address,uint8,bytes32,bytes32)\":{\"notice\":\"Authorizes an address to sign attestations on behalf of the account.\"},\"authorizeSigner(address,bytes32)\":{\"notice\":\"Begin the process of authorizing an address to sign on behalf of the account\"},\"authorizeSignerWithSignature(address,bytes32,uint8,bytes32,bytes32)\":{\"notice\":\"Authorizes an address to act as a signer, for `role`, on behalf of the account.\"},\"authorizeValidatorSigner(address,uint8,bytes32,bytes32)\":{\"notice\":\"Authorizes an address to sign consensus messages on behalf of the account.\"},\"authorizeValidatorSignerWithKeys(address,uint8,bytes32,bytes32,bytes,bytes,bytes)\":{\"notice\":\"Authorizes an address to sign consensus messages on behalf of the account.\"},\"authorizeValidatorSignerWithPublicKey(address,uint8,bytes32,bytes32,bytes)\":{\"notice\":\"Authorizes an address to sign consensus messages on behalf of the account.\"},\"authorizeVoteSigner(address,uint8,bytes32,bytes32)\":{\"notice\":\"Authorizes an address to sign votes on behalf of the account.\"},\"batchGetMetadataURL(address[])\":{\"notice\":\"Getter for the metadata of multiple accounts.\"},\"completeSignerAuthorization(address,bytes32)\":{\"notice\":\"Finish the process of authorizing an address to sign on behalf of the account. \"},\"constructor\":\"Sets initialized == true on implementation contracts\",\"createAccount()\":{\"notice\":\"Creates an account.\"},\"deletePaymentDelegation()\":{\"notice\":\"Removes a validator's payment delegation by setting benficiary and fraction to 0.\"},\"getAttestationSigner(address)\":{\"notice\":\"Returns the attestation signer for the specified account.\"},\"getDataEncryptionKey(address)\":{\"notice\":\"Getter for the data encryption key and version.\"},\"getDefaultSigner(address,bytes32)\":{\"notice\":\"Returns the default signer for the specified account and role. If no signer has been specified it will return the account itself.\"},\"getIndexedSigner(address,bytes32)\":{\"notice\":\"Returns the indexed signer for the specified account and role. If no signer has been specified it will return the account itself.\"},\"getLegacySigner(address,bytes32)\":{\"notice\":\"Returns the legacy signer for the specified account and role. If no signer has been specified it will return the account itself.\"},\"getMetadataURL(address)\":{\"notice\":\"Getter for the metadata of an account.\"},\"getName(address)\":{\"notice\":\"Getter for the name of an account.\"},\"getOffchainStorageRoots(address)\":{\"notice\":\"Returns the full list of offchain storage roots for an account.\"},\"getPaymentDelegation(address)\":{\"notice\":\"Gets validator payment delegation settings.\"},\"getRoleAuthorizationSigner(address,address,bytes32,uint8,bytes32,bytes32)\":{\"notice\":\"Returns the address that signed the provided role authorization.\"},\"getValidatorSigner(address)\":{\"notice\":\"Returns the validator signer for the specified account.\"},\"getVersionNumber()\":{\"notice\":\"Returns the storage, major, minor, and patch version of the contract.\"},\"getVoteSigner(address)\":{\"notice\":\"Returns the vote signer for the specified account.\"},\"getWalletAddress(address)\":{\"notice\":\"Getter for the wallet address for an account\"},\"hasAuthorizedAttestationSigner(address)\":{\"notice\":\"Returns if account has specified a dedicated attestation signer.\"},\"hasAuthorizedSigner(address,string)\":{\"notice\":\"Checks whether or not the account has a signer registered for the plaintext role.\"},\"hasAuthorizedValidatorSigner(address)\":{\"notice\":\"Returns if account has specified a dedicated validator signer.\"},\"hasAuthorizedVoteSigner(address)\":{\"notice\":\"Returns if account has specified a dedicated vote signer.\"},\"hasDefaultSigner(address,bytes32)\":{\"notice\":\"Checks whether or not the account has an indexed signer registered for a role\"},\"hasIndexedSigner(address,bytes32)\":{\"notice\":\"Checks whether or not the account has an indexed signer registered for the role\"},\"hasLegacySigner(address,bytes32)\":{\"notice\":\"Checks whether or not the account has an indexed signer registered for one of the legacy roles\"},\"initialize(address)\":{\"notice\":\"Used in place of the constructor to allow the contract to be upgradable via proxy.\"},\"isAccount(address)\":{\"notice\":\"Check if an account already exists.\"},\"isAuthorizedSigner(address)\":{\"notice\":\"Check if an address has been an authorized signer for an account.\"},\"isDefaultSigner(address,address,bytes32)\":{\"notice\":\"Whether or not the signer has been registered as the default signer for role\"},\"isIndexedSigner(address,address,bytes32)\":{\"notice\":\"Whether or not the signer has been registered as an indexed signer for role\"},\"isLegacyRole(bytes32)\":{\"notice\":\"Checks whether the role is one of Vote, Validator or Attestation\"},\"isLegacySigner(address,address,bytes32)\":{\"notice\":\"Whether or not the signer has been registered as the legacy signer for role\"},\"isSigner(address,address,bytes32)\":{\"notice\":\"Whether or not the signer has been registered as a signer for role\"},\"removeAttestationSigner()\":{\"notice\":\"Removes the currently authorized attestation signer for the account Note that the signers cannot be reauthorized after they have been removed.\"},\"removeDefaultSigner(bytes32)\":{\"notice\":\"Removes the signer for a default role.\"},\"removeIndexedSigner(bytes32)\":{\"notice\":\"Removes the currently authorized and indexed signer for a specific role\"},\"removeSigner(address,bytes32)\":{\"notice\":\"Removes the currently authorized signer for a specific role and if the signer is indexed, remove that as well.\"},\"removeStorageRoot(uint256)\":{\"notice\":\"Removes a CIP8 storage root.\"},\"removeValidatorSigner()\":{\"notice\":\"Removes the currently authorized validator signer for the account Note that the signers cannot be reauthorized after they have been removed.\"},\"removeVoteSigner()\":{\"notice\":\"Removes the currently authorized vote signer for the account. Note that the signers cannot be reauthorized after they have been removed.\"},\"setAccount(string,bytes,address,uint8,bytes32,bytes32)\":{\"notice\":\"Convenience Setter for the dataEncryptionKey and wallet address for an account\"},\"setAccountDataEncryptionKey(bytes)\":{\"notice\":\"Setter for the data encryption key and version.\"},\"setEip712DomainSeparator()\":{\"notice\":\"Sets the EIP712 domain separator for the Celo Accounts abstraction.\"},\"setIndexedSigner(address,bytes32)\":{\"notice\":\"Set the indexed signer for a specific role\"},\"setMetadataURL(string)\":{\"notice\":\"Setter for the metadata of an account.\"},\"setName(string)\":{\"notice\":\"Setter for the name of an account.\"},\"setPaymentDelegation(address,uint256)\":{\"notice\":\"Sets validator payment delegation settings.\"},\"setRegistry(address)\":{\"notice\":\"Updates the address pointing to a Registry contract.\"},\"setWalletAddress(address,uint8,bytes32,bytes32)\":{\"notice\":\"Setter for the wallet address for an account\"},\"signerToAccount(address)\":{\"notice\":\"Returns the account associated with `signer`.\"},\"validatorSignerToAccount(address)\":{\"notice\":\"Returns the account associated with `signer`.\"},\"voteSignerToAccount(address)\":{\"notice\":\"Returns the account associated with `signer`.\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Accounts.sol\":\"Accounts\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Accounts.sol\":{\"keccak256\":\"0xcac7c6f1ce377d6935cf5520595c5da2c7154d182c767eafa0554b154d3586ad\",\"urls\":[\"bzz-raw://59745b74e88d2f906b0f133d05c693be0bfcc09e7ce2dc7c2872a328b85d6964\",\"dweb:/ipfs/QmXmDhTEUM3vPSJMyz2aXeN8SHBJoQ7hyP4Sza4PG3Uxaz\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/FixidityLib.sol\":{\"keccak256\":\"0x2f98fa3b3454621817917bae2830806858a96c9457be2c5b6e0bed5b35aaaba3\",\"urls\":[\"bzz-raw://b6bf5cf79debe02093777cc9ddef4616dedd041ccc2618c43ea91c90afd97df6\",\"dweb:/ipfs/QmXonY3FkVy2jnQvLkgDi4LcaniS5DVZ1zpRZecWKWy9Ro\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Initializable.sol\":{\"keccak256\":\"0xad98825b5d3181f4ce2d2dbe84adeb0cd7960fd80fafb0813539d6d96ba42ab8\",\"urls\":[\"bzz-raw://f76468328c78b80eeaaaadb7b186e41da4a34134446fe11bb707106322b8e32f\",\"dweb:/ipfs/QmNyjyVjPX1GKFibDcJBJyZQ57nhusG3DhPjAGnY7iaU39\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Signatures.sol\":{\"keccak256\":\"0xb11ccc01ac5d81c5496828a92536cfc07378e87c0517fe6f8b429a96c41cb21e\",\"urls\":[\"bzz-raw://8c8b5c705c55e4141bf7fa4a6dd5941ebbf81969033476f737db357224075057\",\"dweb:/ipfs/QmcUySMBWov2uVEzVmwECzFLxiimqzLEip29w9bNvUvRBK\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/UsingRegistry.sol\":{\"keccak256\":\"0xfdd9e70bd58259b491ec54779715d7469ab4f804836bf5f63ff86921d0cae056\",\"urls\":[\"bzz-raw://e55f23f464e49c42b1f31782dcb88cbd2ca64e050d5f110ccdc2ffd50cd582ff\",\"dweb:/ipfs/QmfBiet9GbT9S9rn9SG9CkyXQGAMQRuk4EBmChY1m4kv47\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/interfaces/IAccounts.sol\":{\"keccak256\":\"0x6132a2e3105dbf00b52447db8bc307b052b2d02c0d00497bd0074ae3ce48027a\",\"urls\":[\"bzz-raw://07380d2593f1359e1440153597d16d1b4085a421f52909fafe3fa58f13088c62\",\"dweb:/ipfs/QmSjtmfFswK15Ta5NePg5voNVh9X63muCLCbQKgAZFG4rg\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/interfaces/ICeloVersionedContract.sol\":{\"keccak256\":\"0x9f902faa66069500c7b5e8c9a53ca6afff99dfe6cd3915aa0f3c4fe6a9905ba5\",\"urls\":[\"bzz-raw://880c77a981296abbf6fe9a7e3e0d5d441b19de70d310b10f4a469ce344e8e96c\",\"dweb:/ipfs/QmUAY1xYLXUQXwgBoRFaXFv5z9a6sMYT9v7WdEAAeSGCwW\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/interfaces/IFeeCurrencyWhitelist.sol\":{\"keccak256\":\"0xd4711baf3e38a0abeb3ef48eaab21aeb917f5e0a185cf463fddeb4bf20277b68\",\"urls\":[\"bzz-raw://8f350863943ab54dcf4d5ea525c16748f59263bf36c1d85251c1164d0e592032\",\"dweb:/ipfs/QmXAG6fvVQKM86rVsk6R3ndEoHtS9fcAAVxBApJ5j3LWeK\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/interfaces/IFreezer.sol\":{\"keccak256\":\"0x12508a9d528d1b63dc06644e9d97e864acc94f8a763cf8555e90bcdf1b2f8b21\",\"urls\":[\"bzz-raw://32df109167a13e684c9b296a0e13dda1899e418788eb59bf59aedd7a3ce65466\",\"dweb:/ipfs/QmR6BJCRFMSQpBpnSH2vzLE959FhXnmreDocWWc7fUYnnu\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/interfaces/IRegistry.sol\":{\"keccak256\":\"0x78ba82722d28e815c117f33d4659404f0707dab1c9b51f1bce5d4c15d6c94537\",\"urls\":[\"bzz-raw://0cea84b948896aece11c64b97c22b0f08f86cb45e166a004db4a88a98952cbfa\",\"dweb:/ipfs/QmR4uSGcs4nmph6duroscchstSwMzWSV8CDvD2SSnWuHbs\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/libraries/ReentrancyGuard.sol\":{\"keccak256\":\"0xa2584554532d7004ca3d2d168cd9dfb7694605f1a32431af4d1b7d834fa6b08d\",\"urls\":[\"bzz-raw://fb012e7a76145a86b8746b0b10768845d17a5c5ab9cbdcd863fde42028b5632c\",\"dweb:/ipfs/QmdJi5va3broTVwJJ5uCBSg4T2rwTaAvzSBtnZzETvverK\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/governance/interfaces/IElection.sol\":{\"keccak256\":\"0xebcd0d7dbbb2df503967ad63c9ddd437cef89a94ba2cc2f9ce274f41a4c901ee\",\"urls\":[\"bzz-raw://84dcf3a9952f1ce9a9110abb1783dfead290fd17c28216c5acb22de9d090921d\",\"dweb:/ipfs/QmeNoLz8WcHX9GLcBfQChXFHsFDRaVRRXnPXXvB2qVTaSZ\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/governance/interfaces/IGovernance.sol\":{\"keccak256\":\"0x227bf6a6b56411c368c9752761e2202ad71f2199deb2b114b125712b63372b7e\",\"urls\":[\"bzz-raw://cabeae6e6c47364291f12cf69658dcf5bdd8ac7eebda53d48a2b03aab96386a3\",\"dweb:/ipfs/QmUtPSC4hVz79XVVjFwQ6CozMd6oAR1m6yrPFkHD5sCdB1\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/governance/interfaces/ILockedGold.sol\":{\"keccak256\":\"0x577d01d8a1fbf47980fb5ffd36de2084ec255889b15671adfecd3a285df4f253\",\"urls\":[\"bzz-raw://6b955b6829748cd136fa92c3a434f5419e4eb024d535a854900ad48bd4151b67\",\"dweb:/ipfs/QmXM5uL5dsKecYyedAzsrZXAp81NtWQErbbVEFccJ6ZqiY\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/governance/interfaces/IValidators.sol\":{\"keccak256\":\"0x524a9e48689537421f97296ffd57fa0f2887117f9af9e71dd5ed17e66ba92d2a\",\"urls\":[\"bzz-raw://cf5d0c2f6ee9b2c8e270162455177e9c3bac79ac07d4f37c86f7f2ee5978a756\",\"dweb:/ipfs/QmZTKmytn1Wi3QfU3bHuSaSeYQzRrFKehyngrg37rHD3vV\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/identity/interfaces/IAttestations.sol\":{\"keccak256\":\"0x979aaac636fe6a64f97034bf0bf062b5f0efd6e6f9f3fe84e81180f82eeb7a3e\",\"urls\":[\"bzz-raw://c1255d08278188247ef81fb09edd2d1d4a019fb0fe80fd3d9850415c5eb5caaf\",\"dweb:/ipfs/QmcJvqSM35nAR8p8LwVczhnaY6VwTRThNjfCzkzeiAkz45\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/identity/interfaces/IRandom.sol\":{\"keccak256\":\"0xd65fd529d133cbde94628b39b0d2f0f4b6d0af2e8f97c0e6b4b2cd476479ed1d\",\"urls\":[\"bzz-raw://f2c6fe351990bfdeb55484bd3622d44c8f58579a7212d5cce71a82df846497f5\",\"dweb:/ipfs/QmRDDTXUqbA6dHfJe4ZS1442JDAfwoHq2eH9LHnQyzsh44\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/stability/interfaces/IExchange.sol\":{\"keccak256\":\"0xbfcf77e30fc62218decbb73297d5161b9c490f7e44f75158f1c79674e4b8b83c\",\"urls\":[\"bzz-raw://ad0caaddcb552a2c040e827e9336cdec7dfaf629cca9f30e5f5bc12645abde43\",\"dweb:/ipfs/QmTjnGbfoSkZhNWhrbcYdLjF1LLqAJcviJ2ZKSMH9KWz95\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/stability/interfaces/IReserve.sol\":{\"keccak256\":\"0x8da4d702b47a7e60981ca416f2d0f24a3c1dea9ab44f04b695c0fde02c84a38e\",\"urls\":[\"bzz-raw://198fb3cd945e374926e3d6bcb2469b7f5c635e78b40417a4b3a1eacabeca234b\",\"dweb:/ipfs/Qma8RRSqksFCzL5gWTXmGtJvC4Mw1bgquvN33nKhrRwUrD\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/stability/interfaces/ISortedOracles.sol\":{\"keccak256\":\"0x8f80e430800fff2f04f3981c4b73a2a374b2c2150543a2de51fcf7ba4fb08789\",\"urls\":[\"bzz-raw://f1a472385d5fa1b1cc4ab6ff948cd11f86c55328841d89f39f02b64449d3ac1a\",\"dweb:/ipfs/QmSYfwR8RJ2nyzt9VJtLKqaUHwAPfz579vhcQP7LRLaqTe\"]},\"/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/stability/interfaces/IStableToken.sol\":{\"keccak256\":\"0x091e577acecdf050fe4c41133b11fe330d07050c5fe78b65bfce32ccc29e51c6\",\"urls\":[\"bzz-raw://94f7d7578274be8212b8c9a3f0759d884969b05a7f0c64c7c9352102f4e51ab4\",\"dweb:/ipfs/Qmd3bERcFLrrvpURuzKUg6YCSFisNQ36YpRLWkxEcS1Tkj\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\":{\"keccak256\":\"0xc89ea7e48ba477b1781b24ae963442fff1bb2af33b6178dad679a3fa2f5ab2de\",\"urls\":[\"bzz-raw://b736ddad8143f8f1cd13c20809d4ebce5f5a8c7725081b0b703294078bd506d1\",\"dweb:/ipfs/QmdhTWCXFCuwG9JaPMjwnhkQoDj9su8R7KMPNvD5z9KeWD\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\",\"urls\":[\"bzz-raw://cf4c00fc3c37cc5acf0c82ec6fd97bab67d72c2567fdc0ebf023d9c09b30a08e\",\"dweb:/ipfs/Qmb7TChG6DsEDX7LooJ4vmxot19f7VXX8S1zUGPeJTWbwZ\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}",
+ "bytecode": "0x60806040523480156200001157600080fd5b5060405162008fcd38038062008fcd833981810160405260208110156200003757600080fd5b81019080805190602001909291905050508060006200005b6200012a60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600180819055508062000122576001600260006101000a81548160ff0219169083151502179055505b505062000132565b600033905090565b618e8b80620001426000396000f3fe608060405234801561001057600080fd5b506004361061041d5760003560e01c80637b2434cb1161022b578063ae32fa0e11610130578063c48830d9116100b8578063f0c5658411610087578063f0c56584146121d1578063f2fde38b146121ef578063f333d83614612233578063fbe3c37314612279578063ff836d93146122c75761041d565b8063c48830d9146120ab578063c4d66de814612131578063e7a16e6b14612175578063e8d787cb146121a35761041d565b8063ba40e4f6116100ff578063ba40e4f614611e74578063baf7ef0f14611f25578063bce2b8d614611f8a578063c2e0ee2014611f94578063c47f002714611ff05761041d565b8063ae32fa0e14611beb578063b062c84314611ca8578063b5a664c214611d21578063b6c6662514611da55761041d565b806392f90fbf116101b35780639f024f4b116101825780639f024f4b14611a075780639f68297614611a92578063a5ec94f914611ae0578063a8ae1a3d14611aea578063a91ee0dc14611ba75761041d565b806392f90fbf1461188d57806393c5c487146118fc5780639cafb2a1146119805780639dca362f146119e55761041d565b80638da5cb5b116101fa5780638da5cb5b1461163e5780638f32d59b146116885780638f9ae6dc146116aa57806390b12b47146116f857806391cd074b146118075761041d565b80637b2434cb1461136457806387affe68146113e85780638adaf96f146114765780638bceca58146115b05761041d565b806349045e161161033157806364439b43116102b9578063747daec511610288578063747daec51461116b57806376082c1f146111e4578063760fbbb2146112ab57806376afa04c146112b55780637b1039991461131a5761041d565b806364439b431461100b5780636642d5941461108f578063715018a614611113578063727d079c1461111d5761041d565b80635b07fdd8116103005780635b07fdd814610dc25780635b6d900414610de05780635fd4b08a14610e6e578063614ed49314610f2b57806361bab1ae14610f875761041d565b806349045e1614610c615780634ce38b5f14610cbd57806354255be014610d4157806358b81ea814610d745761041d565b80631465b923116103b4578063289a131811610383578063289a1318146109e35780633184b3c514610ae857806341ddd88014610af25780634282ee6d14610b76578063485a46d114610bdb5761041d565b80631465b9231461077d578063158ef93e146108e15780631fd9afa51461090357806325ca4c9c146109875761041d565b80630fa750d2116103f05780630fa750d2146105985780630fe7abab1461065257806310c504b51461070d5780631441ece7146107175761041d565b80630127dbed146104225780630185a2321461047e57806305be6229146104ac5780630b8e056214610512575b600080fd5b6104646004803603602081101561043857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061232d565b604051808215151515815260200191505060405180910390f35b6104aa6004803603602081101561049457600080fd5b8101908080359060200190929190505050612386565b005b6104f8600480360360408110156104c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061243f565b604051808215151515815260200191505060405180910390f35b61057e6004803603606081101561052857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612482565b604051808215151515815260200191505060405180910390f35b610650600480360360a08110156105ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561060c57600080fd5b82018360208201111561061e57600080fd5b8035906020019184600183028401116401000000008311171561064057600080fd5b909192939192939050505061252c565b005b61070b6004803603602081101561066857600080fd5b810190808035906020019064010000000081111561068557600080fd5b82018360208201111561069757600080fd5b803590602001918460018302840111640100000000831117156106b957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061285e565b005b6107156129e9565b005b6107636004803603604081101561072d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b0a565b604051808215151515815260200191505060405180910390f35b6108df600480360360e081101561079357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156107f157600080fd5b82018360208201111561080357600080fd5b8035906020019184600183028401116401000000008311171561082557600080fd5b90919293919293908035906020019064010000000081111561084657600080fd5b82018360208201111561085857600080fd5b8035906020019184600183028401116401000000008311171561087a57600080fd5b90919293919293908035906020019064010000000081111561089b57600080fd5b8201836020820111156108ad57600080fd5b803590602001918460018302840111640100000000831117156108cf57600080fd5b9091929391929390505050612b4d565b005b6108e9612f08565b604051808215151515815260200191505060405180910390f35b6109456004803603602081101561091957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f1b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109c96004803603602081101561099d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f87565b604051808215151515815260200191505060405180910390f35b610a25600480360360208110156109f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fe0565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610a69578082015181840152602081019050610a4e565b50505050905090810190601f168015610a965780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019060200280838360005b83811015610ad2578082015181840152602081019050610ab7565b5050505090500194505050505060405180910390f35b610af061333b565b005b610b3460048036036020811015610b0857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613445565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610bd960048036036080811015610b8c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803590602001909291908035906020019092919050505061349e565b005b610c4760048036036060811015610bf157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613650565b604051808215151515815260200191505060405180910390f35b610ca360048036036020811015610c7757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506137a1565b604051808215151515815260200191505060405180910390f35b610cff60048036036020811015610cd357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613839565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610d49613892565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b610dc060048036036040811015610d8a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506138b9565b005b610dca613b0e565b6040518082815260200191505060405180910390f35b610e2c60048036036040811015610df657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613b14565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610eb060048036036020811015610e8457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613bcf565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ef0578082015181840152602081019050610ed5565b50505050905090810190601f168015610f1d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610f6d60048036036020811015610f4157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613cb3565b604051808215151515815260200191505060405180910390f35b610fc960048036036020811015610f9d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613d0c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61104d6004803603602081101561102157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613d65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6110d1600480360360208110156110a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613dbe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61111b613e17565b005b6111696004803603604081101561113357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613f50565b005b6111e26004803603602081101561118157600080fd5b810190808035906020019064010000000081111561119e57600080fd5b8201836020820111156111b057600080fd5b803590602001918460018302840111640100000000831117156111d257600080fd5b909192939192939050505061453f565b005b611230600480360360408110156111fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614690565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611270578082015181840152602081019050611255565b50505050905090810190601f16801561129d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6112b3614756565b005b611318600480360360808110156112cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050614877565b005b61132261499a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6113a66004803603602081101561137a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506149c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611434600480360360408110156113fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614a19565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6114ed6004803603602081101561148c57600080fd5b81019080803590602001906401000000008111156114a957600080fd5b8201836020820111156114bb57600080fd5b803590602001918460208302840111640100000000831117156114dd57600080fd5b9091929391929390505050614a4a565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611534578082015181840152602081019050611519565b50505050905001838103825284818151815260200191508051906020019080838360005b83811015611573578082015181840152602081019050611558565b50505050905090810190601f1680156115a05780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b6115fc600480360360408110156115c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614d49565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611646614fc6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611690614fef565b604051808215151515815260200191505060405180910390f35b6116f6600480360360408110156116c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061504d565b005b611805600480360360c081101561170e57600080fd5b810190808035906020019064010000000081111561172b57600080fd5b82018360208201111561173d57600080fd5b8035906020019184600183028401116401000000008311171561175f57600080fd5b90919293919293908035906020019064010000000081111561178057600080fd5b82018360208201111561179257600080fd5b803590602001918460018302840111640100000000831117156117b457600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506152ec565b005b6118736004803603606081101561181d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506153b3565b604051808215151515815260200191505060405180910390f35b6118fa600480360360a08110156118a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050615626565b005b61193e6004803603602081101561191257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506157a0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6119e36004803603608081101561199657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506158c7565b005b6119ed615c2e565b604051808215151515815260200191505060405180910390f35b611a4960048036036020811015611a1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615d67565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b611ade60048036036040811015611aa857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050615dfd565b005b611ae86161a5565b005b611b2c60048036036020811015611b0057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506162c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611b6c578082015181840152602081019050611b51565b50505050905090810190601f168015611b995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b611be960048036036020811015611bbd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506163aa565b005b611c2d60048036036020811015611c0157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061654e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611c6d578082015181840152602081019050611c52565b50505050905090810190601f168015611c9a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b611d1f60048036036020811015611cbe57600080fd5b8101908080359060200190640100000000811115611cdb57600080fd5b820183602082011115611ced57600080fd5b80359060200191846001830284011164010000000083111715611d0f57600080fd5b9091929391929390505050616632565b005b611d6360048036036020811015611d3757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506167aa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611e32600480360360c0811015611dbb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506167dd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611f0b60048036036040811015611e8a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115611ec757600080fd5b820183602082011115611ed957600080fd5b80359060200191846001830284011164010000000083111715611efb57600080fd5b9091929391929390505050616950565b604051808215151515815260200191505060405180910390f35b611f8860048036036080811015611f3b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050616994565b005b611f92616c5b565b005b611fd660048036036020811015611faa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616dfb565b604051808215151515815260200191505060405180910390f35b6120a96004803603602081101561200657600080fd5b810190808035906020019064010000000081111561202357600080fd5b82018360208201111561203557600080fd5b8035906020019184600183028401116401000000008311171561205757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050616e54565b005b612117600480360360608110156120c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050616fe2565b604051808215151515815260200191505060405180910390f35b6121736004803603602081101561214757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050617016565b005b6121a16004803603602081101561218b57600080fd5b81019080803590602001909291905050506170d1565b005b6121cf600480360360208110156121b957600080fd5b810190808035906020019092919050505061725c565b005b6121d96176a4565b6040518082815260200191505060405180910390f35b6122316004803603602081101561220557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506176c0565b005b61225f6004803603602081101561224957600080fd5b8101908080359060200190929190505050617746565b604051808215151515815260200191505060405180910390f35b6122c56004803603604081101561228f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050617838565b005b612313600480360360408110156122dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050617989565b604051808215151515815260200191505060405180910390f35b600061237f8260405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120612b0a565b9050919050565b60006123923383614a19565b905061239d82617746565b6123af576123aa826170d1565b6123b9565b6123b8826179ba565b5b3373ffffffffffffffffffffffffffffffffffffffff167fccc97b55d227538f487c521e1218ba74768b73d088310238027c2ae3b43e9c918284604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a25050565b60008273ffffffffffffffffffffffffffffffffffffffff166124628484613b14565b73ffffffffffffffffffffffffffffffffffffffff161415905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff16600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490509392505050565b60018060008282540192505081905550600060015490506125968760405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120888888617cd0565b6125e68760405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120613f50565b6125ee617e49565b73ffffffffffffffffffffffffffffffffffffffff16634e06fd8a338986866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050602060405180830381600087803b1580156126d457600080fd5b505af11580156126e8573d6000803e3d6000fd5b505050506040513d60208110156126fe57600080fd5b8101908080519060200190929190505050612764576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180618e366021913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f16e382723fb40543364faf68863212ba253a099607bf6d3a5b47e50a8bf9494388604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a26001548114612855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b50505050505050565b6021815110156128d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6461746120656e6372797074696f6e206b6579206c656e677468203c3d20333281525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050818160060190805190602001906129319291906188df565b503373ffffffffffffffffffffffffffffffffffffffff167f43fdefe0a824cb0e3bbaf9c4bc97669187996136fe9282382baf10787f0d808d836040518080602001828103825283818151815260200191508051906020019080838360005b838110156129ab578082015181840152602081019050612990565b50505050905090810190601f1680156129d85780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b6000612a3b3360405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120614d49565b9050612a8d8160405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120617838565b3373ffffffffffffffffffffffffffffffffffffffff167fa197481f404d8a8082368ad7445380f01e75f27dea6b7aef234a4ce071127fae82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250565b60008273ffffffffffffffffffffffffffffffffffffffff16612b2d8484614d49565b73ffffffffffffffffffffffffffffffffffffffff161415905092915050565b6001806000828254019250508190555060006001549050612bb78b60405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f720000000000000000008152506017019050604051602081830303815290604052805190602001208c8c8c617cd0565b612c078b60405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120613f50565b612c0f617e49565b73ffffffffffffffffffffffffffffffffffffffff1663713ea0f3338d8a8a8a8a8a8a6040518963ffffffff1660e01b8152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600081840152601f19601f8201169050808301925050508481038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508481038252868682818152602001925080828437600081840152601f19601f8201169050808301925050509b505050505050505050505050602060405180830381600087803b158015612d5d57600080fd5b505af1158015612d71573d6000803e3d6000fd5b505050506040513d6020811015612d8757600080fd5b8101908080519060200190929190505050612e0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4661696c656420746f207570646174652076616c696461746f72206b6579730081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f16e382723fb40543364faf68863212ba253a099607bf6d3a5b47e50a8bf949438c604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a26001548114612efb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b5050505050505050505050565b600260009054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff169050919050565b606080612fec83612f87565b61305e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050600080905060008090505b8281101561314257613133600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061310557fe5b9060005260206000200180546001816001161561010002031660029004905083617f4490919063ffffffff16565b915080806001019150506130b0565b506060816040519080825280601f01601f1916602001820160405280156131785781602001600182028038833980820191505090505b50905060008090506060846040519080825280602002602001820160405280156131b15781602001602082028038833980820191505090505b50905060008090505b8581101561332a576000600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061320e57fe5b9060005260206000200190508080546001816001161561010002031660029004905083838151811061323c57fe5b60200260200101818152505060008090505b83838151811061325a57fe5b602002602001015181101561331b57818181546001816001161561010002031660029004811061328657fe5b8154600116156132a55790600052602060002090602091828204019190065b9054901a7f0100000000000000000000000000000000000000000000000000000000000000028686815181106132d757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508480600101955050808060010191505061324e565b505080806001019150506131ba565b508281965096505050505050915091565b60004690506040518080618d4b60529139605201905060405180910390206040518060400160405280601381526020017f43656c6f20436f726520436f6e747261637473000000000000000000000000008152508051906020012060405180807f312e300000000000000000000000000000000000000000000000000000000000815250600301905060405180910390208330604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001955050505050506040516020818303038152906040528051906020012060078190555050565b60006134978260405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120614d49565b9050919050565b60018060008282540192505081905550600060015490506135088560405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120868686617cd0565b6135588560405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120613f50565b3373ffffffffffffffffffffffffffffffffffffffff167faab5f8a189373aaa290f42ae65ea5d7971b732366ca5bf66556e76263944af2886604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a26001548114613649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b5050505050565b600061365d8484846153b3565b806137985750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff16801561379757508373ffffffffffffffffffffffffffffffffffffffff16600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600061388b8260405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120614d49565b9050919050565b60008060008060018060046000839350829250819150809050935093509350935090919293565b6138c233612f87565b613934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b61393d82617fcc565b801561394f575061394e3383618026565b5b6139a4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180618def6022913960400191505060405180910390fd5b604051806040016040528060011515815260200160001515815250600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908315150217905550905050803373ffffffffffffffffffffffffffffffffffffffff167f7a162218a1b7bec7fb15b4bb95220fbf423fa3a49718133f5c50361ff1c8537684604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a35050565b60075481565b600080600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613bc45780613bc6565b835b91505092915050565b6060600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613ca75780601f10613c7c57610100808354040283529160200191613ca7565b820191906000526020600020905b815481529060010190602001808311613c8a57829003601f168201915b50505050509050919050565b6000613d058260405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120612b0a565b9050919050565b6000613d5e8260405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120614d49565b9050919050565b6000613db78260405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120618153565b9050919050565b6000613e108260405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120618153565b9050919050565b613e1f614fef565b613e91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b613f5933612f87565b613fcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420616e206163636f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b613fd482617fcc565b614029576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180618ca16022913960400191505060405180910390fd5b6140333383618026565b6140a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6f742061207369676e657220666f722074686973206163636f756e7400000081525060200191505060405180910390fd5b6140b0338383613650565b614105576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180618dc0602f913960400191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061415182617746565b156143a65760405160200180807f63656c6f2e6f72672f636f72652f766f746500000000000000000000000000008152506012019050604051602081830303815290604052805190602001208214156141ef57828160010160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061431f565b60405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e0000000000000081525060190190506040516020818303038152906040528051906020012082141561428857828160010160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061431e565b60405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f7200000000000000000081525060170190506040516020818303038152906040528051906020012082141561431d57828160010160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b3373ffffffffffffffffffffffffffffffffffffffff167fc5cd67202a8095484f559b338b2b6fee0dd81af9f70c4814c6517fcf9a09564c8484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a26144b8565b82600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f2613ed414d18d8152e86c896c04ccce344b75a2f06141f04d39ad069a38725238484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a25b3373ffffffffffffffffffffffffffffffffffffffff167f8a00ae3e0722558391733230bfc96d425df2dd7b44f7ce506580785adcf171a28484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a2505050565b61454833612f87565b6145ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050828282600701919061461092919061895f565b503373ffffffffffffffffffffffffffffffffffffffff167f0b5629fec5b6b5a1c2cfe0de7495111627a8cf297dced72e0669527425d3f01b848460405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a2505050565b600860205281600052604060002081815481106146a957fe5b90600052602060002001600091509150508054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561474e5780601f106147235761010080835404028352916020019161474e565b820191906000526020600020905b81548152906001019060200180831161473157829003601f168201915b505050505081565b60006147a83360405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120614d49565b90506147fa8160405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120617838565b3373ffffffffffffffffffffffffffffffffffffffff167f14670729407debb6ed03d885f8ba57155de89ce39bf17127ae4900ec7c2ad10382604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250565b6148ca8460405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120858585617cd0565b61491a8460405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120613f50565b3373ffffffffffffffffffffffffffffffffffffffff167f9dfbc5a621c3e2d0d83beee687a17dfc796bbce2118793e5e254409bb265ca0b85604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250505050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000614a128260405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120618153565b9050919050565b6000614a2482617746565b614a3757614a328383613b14565b614a42565b614a418383614d49565b5b905092915050565b6060806000809050606085859050604051908082528060200260200182016040528015614a865781602001602082028038833980820191505090505b50905060008090505b86869050811015614b745760036000888884818110614aaa57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701805460018160011615610100020316600290049050828281518110614b2557fe5b602002602001018181525050614b57828281518110614b4057fe5b602002602001015184617f4490919063ffffffff16565b9250614b6d600182617f4490919063ffffffff16565b9050614a8f565b506060826040519080825280601f01601f191660200182016040528015614baa5781602001600182028038833980820191505090505b509050600080905060008090505b88889050811015614d375760008090505b848281518110614bd557fe5b6020026020010151811015614d1b57600360008b8b85818110614bf457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070181815460018160011615610100020316600290048110614c6a57fe5b815460011615614c895790600052602060002090602091828204019190065b9054901a7f010000000000000000000000000000000000000000000000000000000000000002848481518110614cbb57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350614cfe600184617f4490919063ffffffff16565b9250614d14600182617f4490919063ffffffff16565b9050614bc9565b50614d30600182617f4490919063ffffffff16565b9050614bb8565b50828295509550505050509250929050565b6000614d5482617746565b614dc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f526f6c65206973206e6f742061206c6567616379207369676e6572000000000081525060200191505060405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600060405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120841415614e88578160010160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050614f80565b60405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120841415614f05578160010160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050614f7f565b60405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120841415614f7e578160010160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b5b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614614fba5780614fbc565b845b9250505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166150316182db565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b61505633612f87565b6150c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420616e206163636f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561514e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180618cc36021913960400191505060405180910390fd5b6151566189df565b61515f826182e3565b905061517b61516c618301565b8261832790919063ffffffff16565b6151d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180618d9d6023913960400191505060405180910390fd5b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff16815260200182815250600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001016000820151816000015550509050508273ffffffffffffffffffffffffffffffffffffffff167f3bff8b126c8f283f709ae37dc0d3fc03cae85ca4772cfb25b601f4b0b49ca6df836040518082815260200191505060405180910390a2505050565b6152f533612f87565b61530357615301615c2e565b505b61535088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050616e54565b61539d86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061285e565b6153a9848484846158c7565b5050505050505050565b600080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f720000000000000000008152506017019050604051602081830303815290604052805190602001208314801561549e57508373ffffffffffffffffffffffffffffffffffffffff168160010160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156154ad57600191505061561f565b60405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e000000000000008152506019019050604051602081830303815290604052805190602001208314801561555457508373ffffffffffffffffffffffffffffffffffffffff168160010160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1561556357600191505061561f565b60405160200180807f63656c6f2e6f72672f636f72652f766f746500000000000000000000000000008152506012019050604051602081830303815290604052805190602001208314801561560a57508373ffffffffffffffffffffffffffffffffffffffff168160010160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1561561957600191505061561f565b60009150505b9392505050565b615633858585858561833d565b604051806040016040528060011515815260200160011515815250600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908315150217905550905050833373ffffffffffffffffffffffffffffffffffffffff167f6cc56bd06daacce5b10fdf5ad1dc781941e14d7a71d29d33e7001e2956d14e0787604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a35050505050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461584257809150506158c2565b61584b83612f87565b6158bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420616e206163636f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b829150505b919050565b6158d033612f87565b615942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806159a85750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b615b2757600073__Signatures____________________________6396ef41a1338686866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460ff1660ff16815260200183815260200182815260200194505050505060206040518083038186803b158015615a4757600080fd5b505af4158015615a5b573d6000803e3d6000fd5b505050506040513d6020811015615a7157600080fd5b810190808051906020019092919050505090508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614615b25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e76616c6964207369676e617475726500000000000000000000000000000081525060200191505060405180910390fd5b505b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050848160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167ff81d74398fd47e35c36b714019df15f200f623dde569b5b531d6a0b4da5c5f2686604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25050505050565b6000615c3933617fcc565b8015615c4a5750615c4933618401565b5b615cbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636f756e742065786973747300000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060018160000160006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167f805996f252884581e2f74cf3d2b03564d5ec26ccc90850ae12653dc1b72d1fa260405160405180910390a2600191505090565b6000806000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16615df382600101604051806020016040529081600082015481525050618498565b9250925050915091565b615e0682612f87565b615e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b615e8133617fcc565b8015615e935750615e928233618026565b5b615ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180618def6022913960400191505060405180910390fd5b60011515600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16151514615fff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5369676e657220617574686f72697a6174696f6e206e6f74207374617274656481525060200191505060405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff021916908315150217905550808273ffffffffffffffffffffffffffffffffffffffff167f9eeca140dda0bdb74fc9acfda0f1c0324e188a732bd48e078a96b16d97eb54e533604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a35050565b60006161f73360405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120614d49565b90506162498160405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120617838565b3373ffffffffffffffffffffffffffffffffffffffff167fa54764c62865ff0cd3f271fb1d4635662bff10f0878694f1654fb7fbdecb830d82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250565b6060600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561639e5780601f106163735761010080835404028352916020019161639e565b820191906000526020600020905b81548152906001019060200180831161638157829003601f168201915b50505050509050919050565b6163b2614fef565b616424576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156164c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616e6e6f7420726567697374657220746865206e756c6c206164647265737381525060200191505060405180910390fd5b80600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f27fe5f0c1c3b1ed427cc63d0f05759ffdecf9aec9e18d31ef366fc8a6cb5dc3b60405160405180910390a250565b6060600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156166265780601f106165fb57610100808354040283529160200191616626565b820191906000526020600020905b81548152906001019060200180831161660957829003601f168201915b50505050509050919050565b61663b33612f87565b6166ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082829091806001815401808255809150509060018203906000526020600020016000909192939091929390919290919250919061672a9291906189f2565b50503373ffffffffffffffffffffffffffffffffffffffff167f15dfb3066a1bbbdaf9a7f62c47db990114058ae1739fd70a90361ea715bbf3c8838360405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a25050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806040518080618c65603c9139603c0190506040518091039020888888604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405160208183030381529060405280519060200120905073__Signatures____________________________6334d1a233600754838888886040518663ffffffff1660e01b8152600401808681526020018581526020018460ff1660ff1681526020018381526020018281526020019550505050505060206040518083038186803b15801561690857600080fd5b505af415801561691c573d6000803e3d6000fd5b505050506040513d602081101561693257600080fd5b81019080805190602001909291905050509150509695505050505050565b600061698b84848460405160200180838380828437808301925050509250505060405160208183030381529060405280519060200120617989565b90509392505050565b60018060008282540192505081905550600060015490506169fe8560405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120868686617cd0565b616a4e8560405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120613f50565b616a56617e49565b73ffffffffffffffffffffffffffffffffffffffff1663facd743b336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015616ad257600080fd5b505afa158015616ae6573d6000803e3d6000fd5b505050506040513d6020811015616afc57600080fd5b810190808051906020019092919050505015616b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180618d2a6021913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f16e382723fb40543364faf68863212ba253a099607bf6d3a5b47e50a8bf9494386604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a26001548114616c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b5050505050565b616c6433612f87565b616cd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420616e206163636f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001616d0860006182e3565b815250600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101600082015181600001555050905050600073ffffffffffffffffffffffffffffffffffffffff167f3bff8b126c8f283f709ae37dc0d3fc03cae85ca4772cfb25b601f4b0b49ca6df60006040518082815260200191505060405180910390a2565b6000616e4d8260405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120612b0a565b9050919050565b616e5d33612f87565b616ecf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905081816005019080519060200190616f2a929190618a72565b503373ffffffffffffffffffffffffffffffffffffffff167fa6e2c5a23bb917ba0a584c4b250257ddad698685829b66a8813c004b39934fe4836040518080602001828103825283818151815260200191508051906020019080838360005b83811015616fa4578082015181840152602081019050616f89565b50505050905090810190601f168015616fd15780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b6000616fed82617746565b61700157616ffc848484612482565b61700d565b61700c8484846153b3565b5b90509392505050565b600260009054906101000a900460ff1615617099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b6001600260006101000a81548160ff0219169083151502179055506170bd336184a6565b6170c6816163aa565b6170ce61333b565b50565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fe553a3065d5a77d4ec2a0e0c31d49be4bf4d9f4c45883b2d67f61ba9c1b89c5d8284604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a25050565b61726533612f87565b6172d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811061738e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c69642073746f7261676520726f6f7420696e64657800000000000081525060200191505060405180910390fd5b60006001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490500390506060600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061742457fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156174c25780601f10617497576101008083540402835291602001916174c2565b820191906000526020600020905b8154815290600101906020018083116174a557829003601f168201915b50505050509050600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061751357fe5b90600052602060002001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061756757fe5b906000526020600020019080546001816001161561010002031660029004617590929190618af2565b50600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036175e39190618b79565b503373ffffffffffffffffffffffffffffffffffffffff167fae0f2fa495a3eb65d46fe97b0baea8b6fd7edb243175c70f2455e6e83bc6fbaf82856040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015617664578082015181840152602081019050617649565b50505050905090810190601f1680156176915780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2505050565b6040518080618c65603c9139603c019050604051809103902081565b6176c8614fef565b61773a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b617743816184a6565b50565b600060405160200180807f63656c6f2e6f72672f636f72652f766f746500000000000000000000000000008152506012019050604051602081830303815290604052805190602001208214806177e1575060405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f7200000000000000000081525060170190506040516020818303038152906040528051906020012082145b80617831575060405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e0000000000000081525060190190506040516020818303038152906040528051906020012082145b9050919050565b617843338383616fe2565b156178525761785181612386565b5b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549060ff02191690555050803373ffffffffffffffffffffffffffffffffffffffff167fde9ce22cf1f8631ae2b668300f0493971114f40edd305173bd099ce7100fbe0b84604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a35050565b600061799482617746565b6179a7576179a2838361243f565b6179b2565b6179b18383612b0a565b5b905092915050565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600060405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120831415617ac3578160010160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550617c49565b60405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120831415617b87578160010160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550617c48565b60405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120831415617c47578160010160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b3373ffffffffffffffffffffffffffffffffffffffff167fdd0b0d959c29750e7bfabbb7543a56957699d07edc512d2523ffe7502901ac198285604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a2505050565b617cdc858484846185ea565b604051806040016040528060011515815260200160011515815250600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908315150217905550905050833373ffffffffffffffffffffffffffffffffffffffff167f6cc56bd06daacce5b10fdf5ad1dc781941e14d7a71d29d33e7001e2956d14e0787604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a35050505050565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f56616c696461746f727300000000000000000000000000000000000000000000815250600a019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015617f0457600080fd5b505afa158015617f18573d6000803e3d6000fd5b505050506040513d6020811015617f2e57600080fd5b8101908080519060200190929190505050905090565b600080828401905083811015617fc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16159050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061814b57508273ffffffffffffffffffffffffffffffffffffffff16600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b600080600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614618255576181f7818585613650565b61824c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180618e116025913960400191505060405180910390fd5b809150506182d5565b61825e84612f87565b6182d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f7420616e206163636f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b839150505b92915050565b600033905090565b6182eb6189df565b6040518060200160405280838152509050919050565b6183096189df565b604051806020016040528069d3c21bcecceda1000000815250905090565b6000816000015183600001511115905092915050565b600061834d3387878787876167dd565b90508573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146183f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e76616c6964207369676e617475726500000000000000000000000000000081525060200191505060405180910390fd5b6183f986618773565b505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b600081600001519050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561852c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180618c3f6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073__Signatures____________________________6396ef41a1338686866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460ff1660ff16815260200183815260200182815260200194505050505060206040518083038186803b15801561868557600080fd5b505af4158015618699573d6000803e3d6000fd5b505050506040513d60208110156186af57600080fd5b810190808051906020019092919050505090508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614618763576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e76616c6964207369676e617475726500000000000000000000000000000081525060200191505060405180910390fd5b61876c85618773565b5050505050565b61877c33612f87565b6187ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b6187f781617fcc565b801561880957506188083382618026565b5b61885e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526046815260200180618ce46046913960600191505060405180910390fd5b33600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061892057805160ff191683800117855561894e565b8280016001018555821561894e579182015b8281111561894d578251825591602001919060010190618932565b5b50905061895b9190618ba5565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106189a057803560ff19168380011785556189ce565b828001600101855582156189ce579182015b828111156189cd5782358255916020019190600101906189b2565b5b5090506189db9190618ba5565b5090565b6040518060200160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10618a3357803560ff1916838001178555618a61565b82800160010185558215618a61579182015b82811115618a60578235825591602001919060010190618a45565b5b509050618a6e9190618ba5565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10618ab357805160ff1916838001178555618ae1565b82800160010185558215618ae1579182015b82811115618ae0578251825591602001919060010190618ac5565b5b509050618aee9190618ba5565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10618b2b5780548555618b68565b82800160010185558215618b6857600052602060002091601f016020900482015b82811115618b67578254825591600101919060010190618b4c565b5b509050618b759190618ba5565b5090565b815481835581811115618ba057818360005260206000209182019101618b9f9190618bca565b5b505050565b618bc791905b80821115618bc3576000816000905550600101618bab565b5090565b90565b618bf391905b80821115618bef5760008181618be69190618bf6565b50600101618bd0565b5090565b90565b50805460018160011615610100020316600290046000825580601f10618c1c5750618c3b565b601f016020900490600052602060002090810190618c3a9190618ba5565b5b5056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373417574686f72697a655369676e65722861646472657373206163636f756e742c61646472657373207369676e65722c6279746573333220726f6c652943616e6e6f7420617574686f72697a65206163636f756e74206173207369676e657242656e65666963696172792063616e6e6f7420626520616464726573732030783043616e6e6f742072652d617574686f72697a652061646472657373206f72206c6f636b656420676f6c64206163636f756e7420666f7220616e6f74686572206163636f756e7443616e6e6f7420617574686f72697a652076616c696461746f72207369676e6572454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374294672616374696f6e206d757374206e6f742062652067726561746572207468616e20314d75737420617574686f72697a65207369676e6572206265666f72652073657474696e672061732064656661756c7443616e6e6f742072652d617574686f72697a652061646472657373207369676e65726e6f742061637469766520617574686f72697a6564207369676e657220666f7220726f6c654661696c656420746f20757064617465204543445341207075626c6963206b6579a265627a7a72315820494926be723757ebb3486526944b7b3aaf281611d31e3db3240a1acc4784b66b64736f6c634300050d0032",
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061041d5760003560e01c80637b2434cb1161022b578063ae32fa0e11610130578063c48830d9116100b8578063f0c5658411610087578063f0c56584146121d1578063f2fde38b146121ef578063f333d83614612233578063fbe3c37314612279578063ff836d93146122c75761041d565b8063c48830d9146120ab578063c4d66de814612131578063e7a16e6b14612175578063e8d787cb146121a35761041d565b8063ba40e4f6116100ff578063ba40e4f614611e74578063baf7ef0f14611f25578063bce2b8d614611f8a578063c2e0ee2014611f94578063c47f002714611ff05761041d565b8063ae32fa0e14611beb578063b062c84314611ca8578063b5a664c214611d21578063b6c6662514611da55761041d565b806392f90fbf116101b35780639f024f4b116101825780639f024f4b14611a075780639f68297614611a92578063a5ec94f914611ae0578063a8ae1a3d14611aea578063a91ee0dc14611ba75761041d565b806392f90fbf1461188d57806393c5c487146118fc5780639cafb2a1146119805780639dca362f146119e55761041d565b80638da5cb5b116101fa5780638da5cb5b1461163e5780638f32d59b146116885780638f9ae6dc146116aa57806390b12b47146116f857806391cd074b146118075761041d565b80637b2434cb1461136457806387affe68146113e85780638adaf96f146114765780638bceca58146115b05761041d565b806349045e161161033157806364439b43116102b9578063747daec511610288578063747daec51461116b57806376082c1f146111e4578063760fbbb2146112ab57806376afa04c146112b55780637b1039991461131a5761041d565b806364439b431461100b5780636642d5941461108f578063715018a614611113578063727d079c1461111d5761041d565b80635b07fdd8116103005780635b07fdd814610dc25780635b6d900414610de05780635fd4b08a14610e6e578063614ed49314610f2b57806361bab1ae14610f875761041d565b806349045e1614610c615780634ce38b5f14610cbd57806354255be014610d4157806358b81ea814610d745761041d565b80631465b923116103b4578063289a131811610383578063289a1318146109e35780633184b3c514610ae857806341ddd88014610af25780634282ee6d14610b76578063485a46d114610bdb5761041d565b80631465b9231461077d578063158ef93e146108e15780631fd9afa51461090357806325ca4c9c146109875761041d565b80630fa750d2116103f05780630fa750d2146105985780630fe7abab1461065257806310c504b51461070d5780631441ece7146107175761041d565b80630127dbed146104225780630185a2321461047e57806305be6229146104ac5780630b8e056214610512575b600080fd5b6104646004803603602081101561043857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061232d565b604051808215151515815260200191505060405180910390f35b6104aa6004803603602081101561049457600080fd5b8101908080359060200190929190505050612386565b005b6104f8600480360360408110156104c257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061243f565b604051808215151515815260200191505060405180910390f35b61057e6004803603606081101561052857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612482565b604051808215151515815260200191505060405180910390f35b610650600480360360a08110156105ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561060c57600080fd5b82018360208201111561061e57600080fd5b8035906020019184600183028401116401000000008311171561064057600080fd5b909192939192939050505061252c565b005b61070b6004803603602081101561066857600080fd5b810190808035906020019064010000000081111561068557600080fd5b82018360208201111561069757600080fd5b803590602001918460018302840111640100000000831117156106b957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061285e565b005b6107156129e9565b005b6107636004803603604081101561072d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612b0a565b604051808215151515815260200191505060405180910390f35b6108df600480360360e081101561079357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156107f157600080fd5b82018360208201111561080357600080fd5b8035906020019184600183028401116401000000008311171561082557600080fd5b90919293919293908035906020019064010000000081111561084657600080fd5b82018360208201111561085857600080fd5b8035906020019184600183028401116401000000008311171561087a57600080fd5b90919293919293908035906020019064010000000081111561089b57600080fd5b8201836020820111156108ad57600080fd5b803590602001918460018302840111640100000000831117156108cf57600080fd5b9091929391929390505050612b4d565b005b6108e9612f08565b604051808215151515815260200191505060405180910390f35b6109456004803603602081101561091957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f1b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109c96004803603602081101561099d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f87565b604051808215151515815260200191505060405180910390f35b610a25600480360360208110156109f957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fe0565b604051808060200180602001838103835285818151815260200191508051906020019080838360005b83811015610a69578082015181840152602081019050610a4e565b50505050905090810190601f168015610a965780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019060200280838360005b83811015610ad2578082015181840152602081019050610ab7565b5050505090500194505050505060405180910390f35b610af061333b565b005b610b3460048036036020811015610b0857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613445565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610bd960048036036080811015610b8c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803590602001909291908035906020019092919050505061349e565b005b610c4760048036036060811015610bf157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613650565b604051808215151515815260200191505060405180910390f35b610ca360048036036020811015610c7757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506137a1565b604051808215151515815260200191505060405180910390f35b610cff60048036036020811015610cd357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613839565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610d49613892565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b610dc060048036036040811015610d8a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506138b9565b005b610dca613b0e565b6040518082815260200191505060405180910390f35b610e2c60048036036040811015610df657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613b14565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610eb060048036036020811015610e8457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613bcf565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ef0578082015181840152602081019050610ed5565b50505050905090810190601f168015610f1d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610f6d60048036036020811015610f4157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613cb3565b604051808215151515815260200191505060405180910390f35b610fc960048036036020811015610f9d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613d0c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61104d6004803603602081101561102157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613d65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6110d1600480360360208110156110a557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613dbe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61111b613e17565b005b6111696004803603604081101561113357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613f50565b005b6111e26004803603602081101561118157600080fd5b810190808035906020019064010000000081111561119e57600080fd5b8201836020820111156111b057600080fd5b803590602001918460018302840111640100000000831117156111d257600080fd5b909192939192939050505061453f565b005b611230600480360360408110156111fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614690565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611270578082015181840152602081019050611255565b50505050905090810190601f16801561129d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6112b3614756565b005b611318600480360360808110156112cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050614877565b005b61132261499a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6113a66004803603602081101561137a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506149c0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611434600480360360408110156113fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614a19565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6114ed6004803603602081101561148c57600080fd5b81019080803590602001906401000000008111156114a957600080fd5b8201836020820111156114bb57600080fd5b803590602001918460208302840111640100000000831117156114dd57600080fd5b9091929391929390505050614a4a565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611534578082015181840152602081019050611519565b50505050905001838103825284818151815260200191508051906020019080838360005b83811015611573578082015181840152602081019050611558565b50505050905090810190601f1680156115a05780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b6115fc600480360360408110156115c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050614d49565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611646614fc6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611690614fef565b604051808215151515815260200191505060405180910390f35b6116f6600480360360408110156116c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061504d565b005b611805600480360360c081101561170e57600080fd5b810190808035906020019064010000000081111561172b57600080fd5b82018360208201111561173d57600080fd5b8035906020019184600183028401116401000000008311171561175f57600080fd5b90919293919293908035906020019064010000000081111561178057600080fd5b82018360208201111561179257600080fd5b803590602001918460018302840111640100000000831117156117b457600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506152ec565b005b6118736004803603606081101561181d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506153b3565b604051808215151515815260200191505060405180910390f35b6118fa600480360360a08110156118a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050615626565b005b61193e6004803603602081101561191257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506157a0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6119e36004803603608081101561199657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506158c7565b005b6119ed615c2e565b604051808215151515815260200191505060405180910390f35b611a4960048036036020811015611a1d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615d67565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b611ade60048036036040811015611aa857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050615dfd565b005b611ae86161a5565b005b611b2c60048036036020811015611b0057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506162c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611b6c578082015181840152602081019050611b51565b50505050905090810190601f168015611b995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b611be960048036036020811015611bbd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506163aa565b005b611c2d60048036036020811015611c0157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061654e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611c6d578082015181840152602081019050611c52565b50505050905090810190601f168015611c9a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b611d1f60048036036020811015611cbe57600080fd5b8101908080359060200190640100000000811115611cdb57600080fd5b820183602082011115611ced57600080fd5b80359060200191846001830284011164010000000083111715611d0f57600080fd5b9091929391929390505050616632565b005b611d6360048036036020811015611d3757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506167aa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611e32600480360360c0811015611dbb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506167dd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b611f0b60048036036040811015611e8a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115611ec757600080fd5b820183602082011115611ed957600080fd5b80359060200191846001830284011164010000000083111715611efb57600080fd5b9091929391929390505050616950565b604051808215151515815260200191505060405180910390f35b611f8860048036036080811015611f3b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050616994565b005b611f92616c5b565b005b611fd660048036036020811015611faa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050616dfb565b604051808215151515815260200191505060405180910390f35b6120a96004803603602081101561200657600080fd5b810190808035906020019064010000000081111561202357600080fd5b82018360208201111561203557600080fd5b8035906020019184600183028401116401000000008311171561205757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050616e54565b005b612117600480360360608110156120c157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050616fe2565b604051808215151515815260200191505060405180910390f35b6121736004803603602081101561214757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050617016565b005b6121a16004803603602081101561218b57600080fd5b81019080803590602001909291905050506170d1565b005b6121cf600480360360208110156121b957600080fd5b810190808035906020019092919050505061725c565b005b6121d96176a4565b6040518082815260200191505060405180910390f35b6122316004803603602081101561220557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506176c0565b005b61225f6004803603602081101561224957600080fd5b8101908080359060200190929190505050617746565b604051808215151515815260200191505060405180910390f35b6122c56004803603604081101561228f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050617838565b005b612313600480360360408110156122dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050617989565b604051808215151515815260200191505060405180910390f35b600061237f8260405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120612b0a565b9050919050565b60006123923383614a19565b905061239d82617746565b6123af576123aa826170d1565b6123b9565b6123b8826179ba565b5b3373ffffffffffffffffffffffffffffffffffffffff167fccc97b55d227538f487c521e1218ba74768b73d088310238027c2ae3b43e9c918284604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a25050565b60008273ffffffffffffffffffffffffffffffffffffffff166124628484613b14565b73ffffffffffffffffffffffffffffffffffffffff161415905092915050565b60008273ffffffffffffffffffffffffffffffffffffffff16600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161490509392505050565b60018060008282540192505081905550600060015490506125968760405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120888888617cd0565b6125e68760405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120613f50565b6125ee617e49565b73ffffffffffffffffffffffffffffffffffffffff16634e06fd8a338986866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050602060405180830381600087803b1580156126d457600080fd5b505af11580156126e8573d6000803e3d6000fd5b505050506040513d60208110156126fe57600080fd5b8101908080519060200190929190505050612764576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180618e366021913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f16e382723fb40543364faf68863212ba253a099607bf6d3a5b47e50a8bf9494388604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a26001548114612855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b50505050505050565b6021815110156128d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6461746120656e6372797074696f6e206b6579206c656e677468203c3d20333281525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050818160060190805190602001906129319291906188df565b503373ffffffffffffffffffffffffffffffffffffffff167f43fdefe0a824cb0e3bbaf9c4bc97669187996136fe9282382baf10787f0d808d836040518080602001828103825283818151815260200191508051906020019080838360005b838110156129ab578082015181840152602081019050612990565b50505050905090810190601f1680156129d85780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b6000612a3b3360405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120614d49565b9050612a8d8160405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120617838565b3373ffffffffffffffffffffffffffffffffffffffff167fa197481f404d8a8082368ad7445380f01e75f27dea6b7aef234a4ce071127fae82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250565b60008273ffffffffffffffffffffffffffffffffffffffff16612b2d8484614d49565b73ffffffffffffffffffffffffffffffffffffffff161415905092915050565b6001806000828254019250508190555060006001549050612bb78b60405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f720000000000000000008152506017019050604051602081830303815290604052805190602001208c8c8c617cd0565b612c078b60405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120613f50565b612c0f617e49565b73ffffffffffffffffffffffffffffffffffffffff1663713ea0f3338d8a8a8a8a8a8a6040518963ffffffff1660e01b8152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600081840152601f19601f8201169050808301925050508481038352888882818152602001925080828437600081840152601f19601f8201169050808301925050508481038252868682818152602001925080828437600081840152601f19601f8201169050808301925050509b505050505050505050505050602060405180830381600087803b158015612d5d57600080fd5b505af1158015612d71573d6000803e3d6000fd5b505050506040513d6020811015612d8757600080fd5b8101908080519060200190929190505050612e0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4661696c656420746f207570646174652076616c696461746f72206b6579730081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f16e382723fb40543364faf68863212ba253a099607bf6d3a5b47e50a8bf949438c604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a26001548114612efb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b5050505050505050505050565b600260009054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff169050919050565b606080612fec83612f87565b61305e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050600080905060008090505b8281101561314257613133600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061310557fe5b9060005260206000200180546001816001161561010002031660029004905083617f4490919063ffffffff16565b915080806001019150506130b0565b506060816040519080825280601f01601f1916602001820160405280156131785781602001600182028038833980820191505090505b50905060008090506060846040519080825280602002602001820160405280156131b15781602001602082028038833980820191505090505b50905060008090505b8581101561332a576000600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061320e57fe5b9060005260206000200190508080546001816001161561010002031660029004905083838151811061323c57fe5b60200260200101818152505060008090505b83838151811061325a57fe5b602002602001015181101561331b57818181546001816001161561010002031660029004811061328657fe5b8154600116156132a55790600052602060002090602091828204019190065b9054901a7f0100000000000000000000000000000000000000000000000000000000000000028686815181106132d757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508480600101955050808060010191505061324e565b505080806001019150506131ba565b508281965096505050505050915091565b60004690506040518080618d4b60529139605201905060405180910390206040518060400160405280601381526020017f43656c6f20436f726520436f6e747261637473000000000000000000000000008152508051906020012060405180807f312e300000000000000000000000000000000000000000000000000000000000815250600301905060405180910390208330604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001955050505050506040516020818303038152906040528051906020012060078190555050565b60006134978260405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120614d49565b9050919050565b60018060008282540192505081905550600060015490506135088560405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120868686617cd0565b6135588560405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120613f50565b3373ffffffffffffffffffffffffffffffffffffffff167faab5f8a189373aaa290f42ae65ea5d7971b732366ca5bf66556e76263944af2886604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a26001548114613649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b5050505050565b600061365d8484846153b3565b806137985750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160019054906101000a900460ff16801561379757508373ffffffffffffffffffffffffffffffffffffffff16600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600061388b8260405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120614d49565b9050919050565b60008060008060018060046000839350829250819150809050935093509350935090919293565b6138c233612f87565b613934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b61393d82617fcc565b801561394f575061394e3383618026565b5b6139a4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180618def6022913960400191505060405180910390fd5b604051806040016040528060011515815260200160001515815250600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908315150217905550905050803373ffffffffffffffffffffffffffffffffffffffff167f7a162218a1b7bec7fb15b4bb95220fbf423fa3a49718133f5c50361ff1c8537684604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a35050565b60075481565b600080600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613bc45780613bc6565b835b91505092915050565b6060600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613ca75780601f10613c7c57610100808354040283529160200191613ca7565b820191906000526020600020905b815481529060010190602001808311613c8a57829003601f168201915b50505050509050919050565b6000613d058260405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120612b0a565b9050919050565b6000613d5e8260405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120614d49565b9050919050565b6000613db78260405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120618153565b9050919050565b6000613e108260405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120618153565b9050919050565b613e1f614fef565b613e91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b613f5933612f87565b613fcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420616e206163636f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b613fd482617fcc565b614029576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180618ca16022913960400191505060405180910390fd5b6140333383618026565b6140a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4e6f742061207369676e657220666f722074686973206163636f756e7400000081525060200191505060405180910390fd5b6140b0338383613650565b614105576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180618dc0602f913960400191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061415182617746565b156143a65760405160200180807f63656c6f2e6f72672f636f72652f766f746500000000000000000000000000008152506012019050604051602081830303815290604052805190602001208214156141ef57828160010160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061431f565b60405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e0000000000000081525060190190506040516020818303038152906040528051906020012082141561428857828160010160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061431e565b60405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f7200000000000000000081525060170190506040516020818303038152906040528051906020012082141561431d57828160010160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b3373ffffffffffffffffffffffffffffffffffffffff167fc5cd67202a8095484f559b338b2b6fee0dd81af9f70c4814c6517fcf9a09564c8484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a26144b8565b82600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f2613ed414d18d8152e86c896c04ccce344b75a2f06141f04d39ad069a38725238484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a25b3373ffffffffffffffffffffffffffffffffffffffff167f8a00ae3e0722558391733230bfc96d425df2dd7b44f7ce506580785adcf171a28484604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a2505050565b61454833612f87565b6145ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050828282600701919061461092919061895f565b503373ffffffffffffffffffffffffffffffffffffffff167f0b5629fec5b6b5a1c2cfe0de7495111627a8cf297dced72e0669527425d3f01b848460405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a2505050565b600860205281600052604060002081815481106146a957fe5b90600052602060002001600091509150508054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561474e5780601f106147235761010080835404028352916020019161474e565b820191906000526020600020905b81548152906001019060200180831161473157829003601f168201915b505050505081565b60006147a83360405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120614d49565b90506147fa8160405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120617838565b3373ffffffffffffffffffffffffffffffffffffffff167f14670729407debb6ed03d885f8ba57155de89ce39bf17127ae4900ec7c2ad10382604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250565b6148ca8460405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120858585617cd0565b61491a8460405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120613f50565b3373ffffffffffffffffffffffffffffffffffffffff167f9dfbc5a621c3e2d0d83beee687a17dfc796bbce2118793e5e254409bb265ca0b85604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250505050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000614a128260405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120618153565b9050919050565b6000614a2482617746565b614a3757614a328383613b14565b614a42565b614a418383614d49565b5b905092915050565b6060806000809050606085859050604051908082528060200260200182016040528015614a865781602001602082028038833980820191505090505b50905060008090505b86869050811015614b745760036000888884818110614aaa57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701805460018160011615610100020316600290049050828281518110614b2557fe5b602002602001018181525050614b57828281518110614b4057fe5b602002602001015184617f4490919063ffffffff16565b9250614b6d600182617f4490919063ffffffff16565b9050614a8f565b506060826040519080825280601f01601f191660200182016040528015614baa5781602001600182028038833980820191505090505b509050600080905060008090505b88889050811015614d375760008090505b848281518110614bd557fe5b6020026020010151811015614d1b57600360008b8b85818110614bf457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070181815460018160011615610100020316600290048110614c6a57fe5b815460011615614c895790600052602060002090602091828204019190065b9054901a7f010000000000000000000000000000000000000000000000000000000000000002848481518110614cbb57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350614cfe600184617f4490919063ffffffff16565b9250614d14600182617f4490919063ffffffff16565b9050614bc9565b50614d30600182617f4490919063ffffffff16565b9050614bb8565b50828295509550505050509250929050565b6000614d5482617746565b614dc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f526f6c65206973206e6f742061206c6567616379207369676e6572000000000081525060200191505060405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600060405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120841415614e88578160010160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050614f80565b60405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120841415614f05578160010160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050614f7f565b60405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120841415614f7e578160010160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b5b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614614fba5780614fbc565b845b9250505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166150316182db565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b61505633612f87565b6150c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420616e206163636f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561514e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180618cc36021913960400191505060405180910390fd5b6151566189df565b61515f826182e3565b905061517b61516c618301565b8261832790919063ffffffff16565b6151d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180618d9d6023913960400191505060405180910390fd5b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff16815260200182815250600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001016000820151816000015550509050508273ffffffffffffffffffffffffffffffffffffffff167f3bff8b126c8f283f709ae37dc0d3fc03cae85ca4772cfb25b601f4b0b49ca6df836040518082815260200191505060405180910390a2505050565b6152f533612f87565b61530357615301615c2e565b505b61535088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050616e54565b61539d86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061285e565b6153a9848484846158c7565b5050505050505050565b600080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f720000000000000000008152506017019050604051602081830303815290604052805190602001208314801561549e57508373ffffffffffffffffffffffffffffffffffffffff168160010160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156154ad57600191505061561f565b60405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e000000000000008152506019019050604051602081830303815290604052805190602001208314801561555457508373ffffffffffffffffffffffffffffffffffffffff168160010160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1561556357600191505061561f565b60405160200180807f63656c6f2e6f72672f636f72652f766f746500000000000000000000000000008152506012019050604051602081830303815290604052805190602001208314801561560a57508373ffffffffffffffffffffffffffffffffffffffff168160010160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1561561957600191505061561f565b60009150505b9392505050565b615633858585858561833d565b604051806040016040528060011515815260200160011515815250600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908315150217905550905050833373ffffffffffffffffffffffffffffffffffffffff167f6cc56bd06daacce5b10fdf5ad1dc781941e14d7a71d29d33e7001e2956d14e0787604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a35050505050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461584257809150506158c2565b61584b83612f87565b6158bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420616e206163636f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b829150505b919050565b6158d033612f87565b615942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806159a85750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b615b2757600073__Signatures____________________________6396ef41a1338686866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460ff1660ff16815260200183815260200182815260200194505050505060206040518083038186803b158015615a4757600080fd5b505af4158015615a5b573d6000803e3d6000fd5b505050506040513d6020811015615a7157600080fd5b810190808051906020019092919050505090508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614615b25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e76616c6964207369676e617475726500000000000000000000000000000081525060200191505060405180910390fd5b505b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050848160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167ff81d74398fd47e35c36b714019df15f200f623dde569b5b531d6a0b4da5c5f2686604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25050505050565b6000615c3933617fcc565b8015615c4a5750615c4933618401565b5b615cbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4163636f756e742065786973747300000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060018160000160006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167f805996f252884581e2f74cf3d2b03564d5ec26ccc90850ae12653dc1b72d1fa260405160405180910390a2600191505090565b6000806000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16615df382600101604051806020016040529081600082015481525050618498565b9250925050915091565b615e0682612f87565b615e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b615e8133617fcc565b8015615e935750615e928233618026565b5b615ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180618def6022913960400191505060405180910390fd5b60011515600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16151514615fff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5369676e657220617574686f72697a6174696f6e206e6f74207374617274656481525060200191505060405180910390fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160016101000a81548160ff021916908315150217905550808273ffffffffffffffffffffffffffffffffffffffff167f9eeca140dda0bdb74fc9acfda0f1c0324e188a732bd48e078a96b16d97eb54e533604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a35050565b60006161f73360405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120614d49565b90506162498160405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120617838565b3373ffffffffffffffffffffffffffffffffffffffff167fa54764c62865ff0cd3f271fb1d4635662bff10f0878694f1654fb7fbdecb830d82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250565b6060600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561639e5780601f106163735761010080835404028352916020019161639e565b820191906000526020600020905b81548152906001019060200180831161638157829003601f168201915b50505050509050919050565b6163b2614fef565b616424576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156164c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616e6e6f7420726567697374657220746865206e756c6c206164647265737381525060200191505060405180910390fd5b80600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f27fe5f0c1c3b1ed427cc63d0f05759ffdecf9aec9e18d31ef366fc8a6cb5dc3b60405160405180910390a250565b6060600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156166265780601f106165fb57610100808354040283529160200191616626565b820191906000526020600020905b81548152906001019060200180831161660957829003601f168201915b50505050509050919050565b61663b33612f87565b6166ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082829091806001815401808255809150509060018203906000526020600020016000909192939091929390919290919250919061672a9291906189f2565b50503373ffffffffffffffffffffffffffffffffffffffff167f15dfb3066a1bbbdaf9a7f62c47db990114058ae1739fd70a90361ea715bbf3c8838360405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a25050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806040518080618c65603c9139603c0190506040518091039020888888604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060405160208183030381529060405280519060200120905073__Signatures____________________________6334d1a233600754838888886040518663ffffffff1660e01b8152600401808681526020018581526020018460ff1660ff1681526020018381526020018281526020019550505050505060206040518083038186803b15801561690857600080fd5b505af415801561691c573d6000803e3d6000fd5b505050506040513d602081101561693257600080fd5b81019080805190602001909291905050509150509695505050505050565b600061698b84848460405160200180838380828437808301925050509250505060405160208183030381529060405280519060200120617989565b90509392505050565b60018060008282540192505081905550600060015490506169fe8560405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120868686617cd0565b616a4e8560405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120613f50565b616a56617e49565b73ffffffffffffffffffffffffffffffffffffffff1663facd743b336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015616ad257600080fd5b505afa158015616ae6573d6000803e3d6000fd5b505050506040513d6020811015616afc57600080fd5b810190808051906020019092919050505015616b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180618d2a6021913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f16e382723fb40543364faf68863212ba253a099607bf6d3a5b47e50a8bf9494386604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a26001548114616c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b5050505050565b616c6433612f87565b616cd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420616e206163636f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001616d0860006182e3565b815250600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101600082015181600001555050905050600073ffffffffffffffffffffffffffffffffffffffff167f3bff8b126c8f283f709ae37dc0d3fc03cae85ca4772cfb25b601f4b0b49ca6df60006040518082815260200191505060405180910390a2565b6000616e4d8260405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120612b0a565b9050919050565b616e5d33612f87565b616ecf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905081816005019080519060200190616f2a929190618a72565b503373ffffffffffffffffffffffffffffffffffffffff167fa6e2c5a23bb917ba0a584c4b250257ddad698685829b66a8813c004b39934fe4836040518080602001828103825283818151815260200191508051906020019080838360005b83811015616fa4578082015181840152602081019050616f89565b50505050905090810190601f168015616fd15780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b6000616fed82617746565b61700157616ffc848484612482565b61700d565b61700c8484846153b3565b5b90509392505050565b600260009054906101000a900460ff1615617099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b6001600260006101000a81548160ff0219169083151502179055506170bd336184a6565b6170c6816163aa565b6170ce61333b565b50565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fe553a3065d5a77d4ec2a0e0c31d49be4bf4d9f4c45883b2d67f61ba9c1b89c5d8284604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a25050565b61726533612f87565b6172d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050811061738e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c69642073746f7261676520726f6f7420696e64657800000000000081525060200191505060405180910390fd5b60006001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490500390506060600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061742457fe5b906000526020600020018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156174c25780601f10617497576101008083540402835291602001916174c2565b820191906000526020600020905b8154815290600101906020018083116174a557829003601f168201915b50505050509050600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061751357fe5b90600052602060002001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061756757fe5b906000526020600020019080546001816001161561010002031660029004617590929190618af2565b50600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036175e39190618b79565b503373ffffffffffffffffffffffffffffffffffffffff167fae0f2fa495a3eb65d46fe97b0baea8b6fd7edb243175c70f2455e6e83bc6fbaf82856040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015617664578082015181840152602081019050617649565b50505050905090810190601f1680156176915780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2505050565b6040518080618c65603c9139603c019050604051809103902081565b6176c8614fef565b61773a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b617743816184a6565b50565b600060405160200180807f63656c6f2e6f72672f636f72652f766f746500000000000000000000000000008152506012019050604051602081830303815290604052805190602001208214806177e1575060405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f7200000000000000000081525060170190506040516020818303038152906040528051906020012082145b80617831575060405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e0000000000000081525060190190506040516020818303038152906040528051906020012082145b9050919050565b617843338383616fe2565b156178525761785181612386565b5b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080820160006101000a81549060ff02191690556000820160016101000a81549060ff02191690555050803373ffffffffffffffffffffffffffffffffffffffff167fde9ce22cf1f8631ae2b668300f0493971114f40edd305173bd099ce7100fbe0b84604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a35050565b600061799482617746565b6179a7576179a2838361243f565b6179b2565b6179b18383612b0a565b5b905092915050565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600060405160200180807f63656c6f2e6f72672f636f72652f76616c696461746f72000000000000000000815250601701905060405160208183030381529060405280519060200120831415617ac3578160010160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550617c49565b60405160200180807f63656c6f2e6f72672f636f72652f6174746573746174696f6e00000000000000815250601901905060405160208183030381529060405280519060200120831415617b87578160010160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550617c48565b60405160200180807f63656c6f2e6f72672f636f72652f766f74650000000000000000000000000000815250601201905060405160208183030381529060405280519060200120831415617c47578160010160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b3373ffffffffffffffffffffffffffffffffffffffff167fdd0b0d959c29750e7bfabbb7543a56957699d07edc512d2523ffe7502901ac198285604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a2505050565b617cdc858484846185ea565b604051806040016040528060011515815260200160011515815250600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908315150217905550905050833373ffffffffffffffffffffffffffffffffffffffff167f6cc56bd06daacce5b10fdf5ad1dc781941e14d7a71d29d33e7001e2956d14e0787604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a35050505050565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f56616c696461746f727300000000000000000000000000000000000000000000815250600a019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015617f0457600080fd5b505afa158015617f18573d6000803e3d6000fd5b505050506040513d6020811015617f2e57600080fd5b8101908080519060200190929190505050905090565b600080828401905083811015617fc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16159050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061814b57508273ffffffffffffffffffffffffffffffffffffffff16600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b600080600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614618255576181f7818585613650565b61824c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180618e116025913960400191505060405180910390fd5b809150506182d5565b61825e84612f87565b6182d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f7420616e206163636f756e7400000000000000000000000000000000000081525060200191505060405180910390fd5b839150505b92915050565b600033905090565b6182eb6189df565b6040518060200160405280838152509050919050565b6183096189df565b604051806020016040528069d3c21bcecceda1000000815250905090565b6000816000015183600001511115905092915050565b600061834d3387878787876167dd565b90508573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146183f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e76616c6964207369676e617475726500000000000000000000000000000081525060200191505060405180910390fd5b6183f986618773565b505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b600081600001519050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561852c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180618c3f6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073__Signatures____________________________6396ef41a1338686866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460ff1660ff16815260200183815260200182815260200194505050505060206040518083038186803b15801561868557600080fd5b505af4158015618699573d6000803e3d6000fd5b505050506040513d60208110156186af57600080fd5b810190808051906020019092919050505090508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614618763576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e76616c6964207369676e617475726500000000000000000000000000000081525060200191505060405180910390fd5b61876c85618773565b5050505050565b61877c33612f87565b6187ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f556e6b6e6f776e206163636f756e74000000000000000000000000000000000081525060200191505060405180910390fd5b6187f781617fcc565b801561880957506188083382618026565b5b61885e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526046815260200180618ce46046913960600191505060405180910390fd5b33600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061892057805160ff191683800117855561894e565b8280016001018555821561894e579182015b8281111561894d578251825591602001919060010190618932565b5b50905061895b9190618ba5565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106189a057803560ff19168380011785556189ce565b828001600101855582156189ce579182015b828111156189cd5782358255916020019190600101906189b2565b5b5090506189db9190618ba5565b5090565b6040518060200160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10618a3357803560ff1916838001178555618a61565b82800160010185558215618a61579182015b82811115618a60578235825591602001919060010190618a45565b5b509050618a6e9190618ba5565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10618ab357805160ff1916838001178555618ae1565b82800160010185558215618ae1579182015b82811115618ae0578251825591602001919060010190618ac5565b5b509050618aee9190618ba5565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10618b2b5780548555618b68565b82800160010185558215618b6857600052602060002091601f016020900482015b82811115618b67578254825591600101919060010190618b4c565b5b509050618b759190618ba5565b5090565b815481835581811115618ba057818360005260206000209182019101618b9f9190618bca565b5b505050565b618bc791905b80821115618bc3576000816000905550600101618bab565b5090565b90565b618bf391905b80821115618bef5760008181618be69190618bf6565b50600101618bd0565b5090565b90565b50805460018160011615610100020316600290046000825580601f10618c1c5750618c3b565b601f016020900490600052602060002090810190618c3a9190618ba5565b5b5056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373417574686f72697a655369676e65722861646472657373206163636f756e742c61646472657373207369676e65722c6279746573333220726f6c652943616e6e6f7420617574686f72697a65206163636f756e74206173207369676e657242656e65666963696172792063616e6e6f7420626520616464726573732030783043616e6e6f742072652d617574686f72697a652061646472657373206f72206c6f636b656420676f6c64206163636f756e7420666f7220616e6f74686572206163636f756e7443616e6e6f7420617574686f72697a652076616c696461746f72207369676e6572454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374294672616374696f6e206d757374206e6f742062652067726561746572207468616e20314d75737420617574686f72697a65207369676e6572206265666f72652073657474696e672061732064656661756c7443616e6e6f742072652d617574686f72697a652061646472657373207369676e65726e6f742061637469766520617574686f72697a6564207369676e657220666f7220726f6c654661696c656420746f20757064617465204543445341207075626c6963206b6579a265627a7a72315820494926be723757ebb3486526944b7b3aaf281611d31e3db3240a1acc4784b66b64736f6c634300050d0032",
+ "sourceMap": "445:42980:1:-;;;5808:52;8:9:-1;5:2;;;30:1;27;20:12;5:2;5808:52:1;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5808:52:1;;;;;;;;;;;;;;;;5852:4;698:17:159;718:12;:10;;;:12;;:::i;:::-;698:32;;749:9;740:6;;:18;;;;;;;;;;;;;;;;;;806:9;773:43;;802:1;773:43;;;;;;;;;;;;664:159;558:1:34;542:13;:17;;;;135::12;130:57;;176:4;162:11;;:18;;;;;;;;;;;;;;;;;;130:57;81:110;5808:52:1;445:42980;;788:96:155;833:15;867:10;860:17;;788:96;:::o;445:42980:1:-;;;;;;;",
+ "deployedSourceMap": "445:42980:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;445:42980:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35498:143;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;35498:143:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;26629:255;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26629:255:1;;;;;;;;;;;;;;;;;:::i;:::-;;34143:144;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;34143:144:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;24130:170;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24130:170:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;19089:496;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;19089:496:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;19089:496:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19089:496:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;19089:496:1;;;;;;;;;;;;:::i;:::-;;10082:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10082:334:1;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;10082:334:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10082:334:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10082:334:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;10082:334:1;;;;;;;;;;;;;;;:::i;:::-;;27565:188;;;:::i;:::-;;33889:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;33889:142:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20331:567;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;20331:567:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;20331:567:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20331:567:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;20331:567:1;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;20331:567:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20331:567:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;20331:567:1;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;20331:567:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20331:567:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;20331:567:1;;;;;;;;;;;;:::i;:::-;;53:23:12;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;38230:124:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;38230:124:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;38540:107;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;38540:107:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12233:849;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12233:849:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;12233:849:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;12233:849:1;;;;;;;;;;;;;;;;;;;6610:427;;;:::i;:::-;;32942:124;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32942:124:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17542:276;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;17542:276:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25085:253;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25085:253:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;39163:127;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;39163:127:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;33282:134;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;33282:134:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6034:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21797:466;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21797:466:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3164:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32089:217;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32089:217:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;36184:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;36184:112:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;36184:112:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35148:133;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;35148:133:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;33622:138;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;33622:138:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;29629:146;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29629:146:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;30057:138;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;30057:138:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1684:137:159;;;:::i;:::-;;14941:992:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14941:992:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10540:270;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10540:270:1;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;10540:270:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10540:270:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10540:270:1;;;;;;;;;;;;:::i;:::-;;3268:55;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3268:55:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3268:55:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28313:216;;;:::i;:::-;;21296:279;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;21296:279:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2540:25:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;29193:152:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29193:152:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;32560:190;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32560:190:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;36905:770;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;36905:770:1;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;36905:770:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;36905:770:1;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;36905:770:1;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;36905:770:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;36905:770:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31309:526;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31309:526:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;899:77:159;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1250:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13503:483:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13503:483:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7663:352;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7663:352:1;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7663:352:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7663:352:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7663:352:1;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7663:352:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7663:352:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7663:352:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23364:494;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23364:494:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16436:350;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;16436:350:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30469:302;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;30469:302:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9390:520;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9390:520:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8113:279;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14529:232;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14529:232:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22493:599;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22493:599:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27928:208;;;:::i;:::-;;36493:126;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;36493:126:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;36493:126:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3089:230:23;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3089:230:23;;;;;;;;;;;;;;;;;;;:::i;:::-;;37914:137:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;37914:137:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;37914:137:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10932:213;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10932:213:1;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;10932:213:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10932:213:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10932:213:1;;;;;;;;;;;;:::i;:::-;;2618:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2618:47:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;41568:386;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;41568:386:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;34766:175;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;34766:175:1;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;34766:175:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;34766:175:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;34766:175:1;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18222:388;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;18222:388:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14102:240;;;:::i;:::-;;35862:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;35862:147:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8490:224;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8490:224:1;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;8490:224:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8490:224:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8490:224:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;8490:224:1;;;;;;;;;;;;;;;:::i;:::-;;24571:252;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24571:252:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6340:173;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6340:173:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;25458:218;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25458:218:1;;;;;;;;;;;;;;;;;:::i;:::-;;11502:535;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11502:535:1;;;;;;;;;;;;;;;;;:::i;:::-;;3020:140;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1970:107:159;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1970:107:159;;;;;;;;;;;;;;;;;;;:::i;:::-;;30900:155:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;30900:155:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;27128:266;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27128:266:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34401:187;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;34401:187:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;35498:143;35576:4;35595:41;35611:7;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;35595:15;:41::i;:::-;35588:48;;35498:143;;;:::o;26629:255::-;26685:17;26705:34;26722:10;26734:4;26705:16;:34::i;:::-;26685:54;;26745:18;26758:4;26745:12;:18::i;:::-;:73;;26793:25;26813:4;26793:19;:25::i;:::-;26745:73;;;26766:24;26785:4;26766:18;:24::i;:::-;26745:73;26851:10;26830:49;;;26863:9;26874:4;26830:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;26629:255;;:::o;34143:144::-;34221:4;34275:7;34240:42;;:31;34257:7;34266:4;34240:16;:31::i;:::-;:42;;;;34233:49;;34143:144;;;;:::o;24130:170::-;24235:4;24289:6;24256:39;;:14;:23;24271:7;24256:23;;;;;;;;;;;;;;;:29;24280:4;24256:29;;;;;;;;;;;;;;;;;;;;;:39;;;24249:46;;24130:170;;;;;:::o;19089:496::-;970:1:34;953:13;;:18;;;;;;;;;;;977:20;1000:13;;977:36;;19266:68:1;19301:6;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;19326:1;19329;19332;19266:34;:68::i;:::-;19340:41;19357:6;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;19340:16;:41::i;:::-;19403:15;:13;:15::i;:::-;:36;;;19440:10;19452:6;19460:14;;19403:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;19403:72:1;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19403:72:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19403:72:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19403:72:1;;;;;;;;;;;;;;;;19388:136;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19561:10;19535:45;;;19573:6;19535:45;;;;;;;;;;;;;;;;;;;;;;1050:13:34;;1034:12;:29;1026:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19089:496:1;;;;;;;:::o;10082:334::-;10200:2;10172:17;:24;:30;;10164:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10245:23;10271:8;:20;10280:10;10271:20;;;;;;;;;;;;;;;10245:46;;10325:17;10297:7;:25;;:45;;;;;;;;;;;;:::i;:::-;;10381:10;10353:58;;;10393:17;10353:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;10353:58:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10082:334;;:::o;27565:188::-;27606:14;27623:39;27639:10;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;27623:15;:39::i;:::-;27606:56;;27668:32;27681:6;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;27668:12;:32::i;:::-;27729:10;27711:37;;;27741:6;27711:37;;;;;;;;;;;;;;;;;;;;;;27565:188;:::o;33889:142::-;33966:4;34019:7;33985:41;;:30;34001:7;34010:4;33985:15;:30::i;:::-;:41;;;;33978:48;;33889:142;;;;:::o;20331:567::-;970:1:34;953:13;;:18;;;;;;;;;;;977:20;1000:13;;977:36;;20563:68:1;20598:6;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;20623:1;20626;20629;20563:34;:68::i;:::-;20637:41;20654:6;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;20637:16;:41::i;:::-;20700:15;:13;:15::i;:::-;:32;;;20733:10;20745:6;20753:14;;20769:12;;20783:6;;20700:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;20700:90:1;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;20700:90:1;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;20700:90:1;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20700:90:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20700:90:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20700:90:1;;;;;;;;;;;;;;;;20685:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20874:10;20848:45;;;20886:6;20848:45;;;;;;;;;;;;;;;;;;;;;;1050:13:34;;1034:12;:29;1026:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20331:567:1;;;;;;;;;;;:::o;53:23:12:-;;;;;;;;;;;;;:::o;38230:124:1:-;38296:7;38318:8;:17;38327:7;38318:17;;;;;;;;;;;;;;;:31;;;;;;;;;;;;38311:38;;38230:124;;;:::o;38540:107::-;38597:4;38617:8;:17;38626:7;38617:17;;;;;;;;;;;;;;;:24;;;;;;;;;;;;38609:33;;38540:107;;;:::o;12233:849::-;12318:12;12332:16;12366:18;12376:7;12366:9;:18::i;:::-;12358:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12410:19;12432:20;:29;12453:7;12432:29;;;;;;;;;;;;;;;:36;;;;12410:58;;12474:19;12496:1;12474:23;;12508:9;12520:1;12508:13;;12503:127;12527:11;12523:1;:15;12503:127;;;12567:56;12583:20;:29;12604:7;12583:29;;;;;;;;;;;;;;;12613:1;12583:32;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;12567:11;:15;;:56;;;;:::i;:::-;12553:70;;12540:3;;;;;;;12503:127;;;;12636:25;12674:11;12664:22;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;116:4;104:10;96:6;87:34;147:4;139:6;135:17;125:27;;0:156;12664:22:1;;;;12636:50;;12692:17;12712:1;12692:21;;12719:24;12760:11;12746:26;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;12746:26:1;;;;12719:53;;12783:9;12795:1;12783:13;;12778:263;12802:11;12798:1;:15;12778:263;;;12828:18;12849:20;:29;12870:7;12849:29;;;;;;;;;;;;;;;12879:1;12849:32;;;;;;;;;;;;;;;12828:53;;12902:4;:11;;;;;;;;;;;;;;;;12889:7;12897:1;12889:10;;;;;;;;;;;;;:24;;;;;12926:9;12938:1;12926:13;;12921:114;12945:7;12953:1;12945:10;;;;;;;;;;;;;;12941:1;:14;12921:114;;;12998:4;13003:1;12998:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12972:12;12985:9;12972:23;;;;;;;;;;;:33;;;;;;;;;;;13015:11;;;;;;;12957:3;;;;;;;12921:114;;;;12778:263;12815:3;;;;;;;12778:263;;;;13055:12;13069:7;13047:30;;;;;;;;;12233:849;;;:::o;6610:427::-;6659:15;6708:7;6697:18;;6788:115;;;;;;;;;;;;;;;;;;;6923:28;;;;;;;;;;;;;;;;;6913:39;;;;;;6962:16;;;;;;;;;;;;;;;;;;;6988:7;7013:4;6768:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6768:258:1;;;6751:281;;;;;;6727:21;:305;;;;6610:427;:::o;32942:124::-;33003:7;33025:36;33041:7;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;33025:15;:36::i;:::-;33018:43;;32942:124;;;:::o;17542:276::-;970:1:34;953:13;;:18;;;;;;;;;;;977:20;1000:13;;977:36;;17656:63:1;17691:6;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;17711:1;17714;17717;17656:34;:63::i;:::-;17725:36;17742:6;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;17725:16;:36::i;:::-;17794:10;17773:40;;;17806:6;17773:40;;;;;;;;;;;;;;;;;;;;;;1050:13:34;;1034:12;:29;1026:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17542:276:1;;;;;:::o;25085:253::-;25171:4;25196:37;25211:7;25220:6;25228:4;25196:14;:37::i;:::-;:137;;;;25244:20;:29;25265:7;25244:29;;;;;;;;;;;;;;;:35;25274:4;25244:35;;;;;;;;;;;:43;25280:6;25244:43;;;;;;;;;;;;;;;:53;;;;;;;;;;;;:88;;;;;25325:7;25301:31;;:12;:20;25314:6;25301:20;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;25244:88;25196:137;25183:150;;25085:253;;;;;:::o;39163:127::-;39230:4;39282:1;39250:34;;:12;:20;39263:6;39250:20;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;39242:43;;39163:127;;;:::o;33282:134::-;33348:7;33370:41;33386:7;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;33370:15;:41::i;:::-;33363:48;;33282:134;;;:::o;6034:117::-;6085:7;6094;6103;6112;6135:1;6138;6141;6144;6127:19;;;;;;;;;;;;;;;;;;;;6034:117;;;;:::o;21797:466::-;21873:21;21883:10;21873:9;:21::i;:::-;21865:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21935:20;21948:6;21935:12;:20::i;:::-;:82;;;;;21959:58;21998:10;22010:6;21959:38;:58::i;:::-;21935:82;21920:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22123:72;;;;;;;;22160:4;22123:72;;;;;;22183:5;22123:72;;;;;22074:20;:32;22095:10;22074:32;;;;;;;;;;;;;;;:38;22107:4;22074:38;;;;;;;;;;;:46;22113:6;22074:46;;;;;;;;;;;;;;;:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22253:4;22233:10;22206:52;;;22245:6;22206:52;;;;;;;;;;;;;;;;;;;;;;21797:466;;:::o;3164:36::-;;;;:::o;32089:217::-;32167:7;32182:21;32206:14;:23;32221:7;32206:23;;;;;;;;;;;;;;;:29;32230:4;32206:29;;;;;;;;;;;;;;;;;;;;;32182:53;;32273:1;32248:27;;:13;:27;;;:53;;32288:13;32248:53;;;32278:7;32248:53;32241:60;;;32089:217;;;;:::o;36184:112::-;36241:13;36269:8;:17;36278:7;36269:17;;;;;;;;;;;;;;;:22;;36262:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36184:112;;;:::o;35148:133::-;35221:4;35240:36;35256:7;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;35240:15;:36::i;:::-;35233:43;;35148:133;;;:::o;33622:138::-;33690:7;33712:43;33728:7;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;33712:15;:43::i;:::-;33705:50;;33622:138;;;:::o;29629:146::-;29700:7;29722:48;29746:6;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;29722:23;:48::i;:::-;29715:55;;29629:146;;;:::o;30057:138::-;30125:7;30147:43;30171:6;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;30147:23;:43::i;:::-;30140:50;;30057:138;;;:::o;1684:137:159:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1745:40;;1766:6;;;;;;;;;;;1745:40;;;;;;;;;;;;1812:1;1795:6;;:19;;;;;;;;;;;;;;;;;;1684:137::o;14941:992:1:-;15018:21;15028:10;15018:9;:21::i;:::-;15010:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15072:20;15085:6;15072:12;:20::i;:::-;15064:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15152:58;15191:10;15203:6;15152:38;:58::i;:::-;15137:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15269:34;15278:10;15290:6;15298:4;15269:8;:34::i;:::-;15261:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15362:23;15388:8;:20;15397:10;15388:20;;;;;;;;;;;;;;;15362:46;;15418:18;15431:4;15418:12;:18::i;:::-;15414:461;;;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;15450:4;:18;15446:252;;;15503:6;15480:7;:15;;:20;;;:29;;;;;;;;;;;;;;;;;;15446:252;;;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;15528:4;:25;15524:174;;;15595:6;15565:7;:15;;:27;;;:36;;;;;;;;;;;;;;;;;;15524:174;;;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;15620:4;:23;15616:82;;;15683:6;15655:7;:15;;:25;;;:34;;;;;;;;;;;;;;;;;;15616:82;15524:174;15446:252;15726:10;15710:41;;;15738:6;15746:4;15710:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;15414:461;;;15807:6;15772:14;:26;15787:10;15772:26;;;;;;;;;;;;;;;:32;15799:4;15772:32;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;15843:10;15826:42;;;15855:6;15863:4;15826:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;15414:461;15903:10;15886:42;;;15915:6;15923:4;15886:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;14941:992;;;:::o;10540:270::-;10616:21;10626:10;10616:9;:21::i;:::-;10608:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10663:23;10689:8;:20;10698:10;10689:20;;;;;;;;;;;;;;;10663:46;;10737:11;;10715:7;:19;;:33;;;;;;;:::i;:::-;;10781:10;10759:46;;;10793:11;;10759:46;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;10759:46:1;;;;;;;;;;;;;;10540:270;;;:::o;3268:55::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;28313:216::-;28361:14;28378:46;28394:10;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;28378:15;:46::i;:::-;28361:63;;28430:39;28443:6;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;28430:12;:39::i;:::-;28505:10;28480:44;;;28517:6;28480:44;;;;;;;;;;;;;;;;;;;;;;28313:216;:::o;21296:279::-;21392:70;21427:6;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;21454:1;21457;21460;21392:34;:70::i;:::-;21468:43;21485:6;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;21468:16;:43::i;:::-;21551:10;21523:47;;;21563:6;21523:47;;;;;;;;;;;;;;;;;;;;;;21296:279;;;;:::o;2540:25:23:-;;;;;;;;;;;;;:::o;29193:152:1:-;29268:7;29290:50;29314:6;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;29290:23;:50::i;:::-;29283:57;;29193:152;;;:::o;32560:190::-;32638:7;32660:18;32673:4;32660:12;:18::i;:::-;:85;;32714:31;32731:7;32740:4;32714:16;:31::i;:::-;32660:85;;;32681:30;32697:7;32706:4;32681:15;:30::i;:::-;32660:85;32653:92;;32560:190;;;;:::o;36905:770::-;37005:16;37023:12;37045:17;37065:1;37045:21;;37072:22;37111:15;;:22;;37097:37;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;37097:37:1;;;;37072:62;;37145:9;37157:1;37145:13;;37140:185;37164:15;;:22;;37160:1;:26;37140:185;;;37227:8;:28;37236:15;;37252:1;37236:18;;;;;;;;;;;;;;;37227:28;;;;;;;;;;;;;;;:40;;37221:54;;;;;;;;;;;;;;;;37210:5;37216:1;37210:8;;;;;;;;;;;;;:65;;;;;37295:23;37309:5;37315:1;37309:8;;;;;;;;;;;;;;37295:9;:13;;:23;;;;:::i;:::-;37283:35;;37192:8;37198:1;37192;:5;;:8;;;;:::i;:::-;37188:12;;37140:185;;;;37331:17;37361:9;37351:20;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;116:4;104:10;96:6;87:34;147:4;139:6;135:17;125:27;;0:156;37351:20:1;;;;37331:40;;37377:15;37395:1;37377:19;;37407:9;37419:1;37407:13;;37402:243;37426:15;;:22;;37422:1;:26;37402:243;;;37477:9;37489:1;37477:13;;37472:167;37496:5;37502:1;37496:8;;;;;;;;;;;;;;37492:1;:12;37472:167;;;37552:8;:28;37561:15;;37577:1;37561:18;;;;;;;;;;;;;;;37552:28;;;;;;;;;;;;;;;:40;;37594:1;37546:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37530:4;37535:7;37530:13;;;;;;;;;;;:66;;;;;;;;;;;37616:14;37628:1;37616:7;:11;;:14;;;;:::i;:::-;37606:24;;37510:8;37516:1;37510;:5;;:8;;;;:::i;:::-;37506:12;;37472:167;;;;37454:8;37460:1;37454;:5;;:8;;;;:::i;:::-;37450:12;;37402:243;;;;37658:5;37665:4;37650:20;;;;;;;;36905:770;;;;;:::o;31309:526::-;31387:7;31410:18;31423:4;31410:12;:18::i;:::-;31402:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31467:23;31493:8;:18;31502:8;31493:18;;;;;;;;;;;;;;;31467:44;;31517:14;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;31541:4;:23;31537:240;;;31583:7;:15;;:25;;;;;;;;;;;;31574:34;;31537:240;;;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;31625:4;:25;31621:156;;;31669:7;:15;;:27;;;;;;;;;;;;31660:36;;31621:156;;;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;31713:4;:18;31709:68;;;31750:7;:15;;:20;;;;;;;;;;;;31741:29;;31709:68;31621:156;31537:240;31808:1;31790:20;;:6;:20;;;:40;;31824:6;31790:40;;;31813:8;31790:40;31783:47;;;;31309:526;;;;:::o;899:77:159:-;937:7;963:6;;;;;;;;;;;956:13;;899:77;:::o;1250:92::-;1290:4;1329:6;;;;;;;;;;;1313:22;;:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;13503:483:1:-;13593:21;13603:10;13593:9;:21::i;:::-;13585:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13670:1;13647:25;;:11;:25;;;;13639:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13716:29;;:::i;:::-;13748:26;13765:8;13748:16;:26::i;:::-;13716:58;;13788:27;13794:20;:18;:20::i;:::-;13788:1;:5;;:27;;;;:::i;:::-;13780:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13894:33;;;;;;;;13912:11;13894:33;;;;;;13925:1;13894:33;;;13861:18;:30;13880:10;13861:30;;;;;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13959:11;13938:43;;;13972:8;13938:43;;;;;;;;;;;;;;;;;;13503:483;;;:::o;7663:352::-;7841:21;7851:10;7841:9;:21::i;:::-;7836:58;;7872:15;:13;:15::i;:::-;;7836:58;7899:13;7907:4;;7899:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;7899:13:1;;;;;;:7;:13::i;:::-;7918:46;7946:17;;7918:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;7918:46:1;;;;;;:27;:46::i;:::-;7970:40;7987:13;8002:1;8005;8008;7970:16;:40::i;:::-;7663:352;;;;;;;;:::o;23364:494::-;23469:4;23483:23;23509:8;:18;23518:8;23509:18;;;;;;;;;;;;;;;23483:44;;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;23537:4;:23;:62;;;;;23593:6;23564:35;;:7;:15;;:25;;;;;;;;;;;;:35;;;23537:62;23533:321;;;23616:4;23609:11;;;;;23533:321;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;23637:4;:25;:66;;;;;23697:6;23666:37;;:7;:15;;:27;;;;;;;;;;;;:37;;;23637:66;23633:221;;;23720:4;23713:11;;;;;23633:221;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;23741:4;:18;:52;;;;;23787:6;23763:30;;:7;:15;;:20;;;;;;;;;;;;:30;;;23741:52;23737:117;;;23810:4;23803:11;;;;;23737:117;23842:5;23835:12;;;23364:494;;;;;;:::o;16436:350::-;16554:47;16579:6;16587:4;16593:1;16596;16599;16554:24;:47::i;:::-;16656:71;;;;;;;;16693:4;16656:71;;;;;;16716:4;16656:71;;;;;16607:20;:32;16628:10;16607:32;;;;;;;;;;;;;;;:38;16640:4;16607:38;;;;;;;;;;;:46;16646:6;16607:46;;;;;;;;;;;;;;;:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16776:4;16756:10;16739:42;;;16768:6;16739:42;;;;;;;;;;;;;;;;;;;;;;16436:350;;;;;:::o;30469:302::-;30533:7;30548:26;30577:12;:20;30590:6;30577:20;;;;;;;;;;;;;;;;;;;;;;;;;30548:49;;30637:1;30607:32;;:18;:32;;;30603:164;;30656:18;30649:25;;;;;30603:164;30703:17;30713:6;30703:9;:17::i;:::-;30695:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30754:6;30747:13;;;30469:302;;;;:::o;9390:520::-;9491:21;9501:10;9491:9;:21::i;:::-;9483:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9561:10;9544:27;;:13;:27;;;:60;;;;9600:3;9575:29;;:13;:29;;;9544:60;9538:212;;9615:14;9632:10;:29;9662:10;9674:1;9677;9680;9632:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9632:50:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9632:50:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9632:50:1;;;;;;;;;;;;;;;;9615:67;;9708:13;9698:23;;:6;:23;;;9690:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9538:212;;9755:23;9781:8;:20;9790:10;9781:20;;;;;;;;;;;;;;;9755:46;;9831:13;9807:7;:21;;;:37;;;;;;;;;;;;;;;;;;9879:10;9855:50;;;9891:13;9855:50;;;;;;;;;;;;;;;;;;;;;;9390:520;;;;;:::o;8113:279::-;8154:4;8174:24;8187:10;8174:12;:24::i;:::-;:61;;;;;8202:33;8224:10;8202:21;:33::i;:::-;8174:61;8166:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8260:23;8286:8;:20;8295:10;8286:20;;;;;;;;;;;;;;;8260:46;;8329:4;8312:7;:14;;;:21;;;;;;;;;;;;;;;;;;8359:10;8344:26;;;;;;;;;;;;8383:4;8376:11;;;8113:279;:::o;14529:232::-;14599:7;14608;14623:36;14662:18;:27;14681:7;14662:27;;;;;;;;;;;;;;;14623:66;;14703:10;:22;;;;;;;;;;;;14727:28;:10;:19;;:26;;;;;;;;;;;;;;;;;;:28::i;:::-;14695:61;;;;;14529:232;;;:::o;22493:599::-;22582:18;22592:7;22582:9;:18::i;:::-;22574:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22641:24;22654:10;22641:12;:24::i;:::-;:87;;;;;22669:59;22708:7;22717:10;22669:38;:59::i;:::-;22641:87;22626:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22858:4;22799:63;;:20;:29;22820:7;22799:29;;;;;;;;;;;;;;;:35;22829:4;22799:35;;;;;;;;;;;:47;22835:10;22799:47;;;;;;;;;;;;;;;:55;;;;;;;;;;;;:63;;;22784:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22944:7;22917:12;:24;22930:10;22917:24;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;23017:4;22957:20;:29;22978:7;22957:29;;;;;;;;;;;;;;;:35;22987:4;22957:35;;;;;;;;;;;:47;22993:10;22957:47;;;;;;;;;;;;;;;:57;;;:64;;;;;;;;;;;;;;;;;;23082:4;23061:7;23032:55;;;23070:10;23032:55;;;;;;;;;;;;;;;;;;;;;;22493:599;;:::o;27928:208::-;27974:14;27991:44;28007:10;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;27991:15;:44::i;:::-;27974:61;;28041:37;28054:6;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;28041:12;:37::i;:::-;28112:10;28089:42;;;28124:6;28089:42;;;;;;;;;;;;;;;;;;;;;;27928:208;:::o;36493:126::-;36557:13;36585:8;:17;36594:7;36585:17;;;;;;;;;;;;;;;:29;;36578:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36493:126;;;:::o;3089:230:23:-;1103:9:159;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3193:1:23;3166:29;;:15;:29;;;;3158:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3259:15;3238:8;;:37;;;;;;;;;;;;;;;;;;3298:15;3286:28;;;;;;;;;;;;3089:230;:::o;37914:137:1:-;37984:12;38011:8;:17;38020:7;38011:17;;;;;;;;;;;;;;;:35;;38004:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37914:137;;;:::o;10932:213::-;10999:21;11009:10;10999:9;:21::i;:::-;10991:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11046:20;:32;11067:10;11046:32;;;;;;;;;;;;;;;11084:3;;11046:42;;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;11046:42:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;11124:10;11099:41;;;11136:3;;11099:41;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11099:41:1;;;;;;;;;;;;;;10932:213;;:::o;2618:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;41568:386::-;41731:7;41746:18;3079:81;;;;;;;;;;;;;;;;;;;41829:7;41838:6;41846:4;41784:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;41784:67:1;;;41767:90;;;;;;41746:111;;41870:10;:35;41906:21;;41929:10;41941:1;41944;41947;41870:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;41870:79:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;41870:79:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;41870:79:1;;;;;;;;;;;;;;;;41863:86;;;41568:386;;;;;;;;:::o;34766:175::-;34857:4;34876:60;34893:7;34929:4;;34912:22;;;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;34912:22:1;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;34912:22:1;;;34902:33;;;;;;34876:16;:60::i;:::-;34869:67;;34766:175;;;;;:::o;18222:388::-;970:1:34;953:13;;:18;;;;;;;;;;;977:20;1000:13;;977:36;;18341:68:1;18376:6;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;18401:1;18404;18407;18341:34;:68::i;:::-;18415:41;18432:6;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;18415:16;:41::i;:::-;18472:15;:13;:15::i;:::-;:27;;;18500:10;18472:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18472:39:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18472:39:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18472:39:1;;;;;;;;;;;;;;;;18471:40;18463:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18586:10;18560:45;;;18598:6;18560:45;;;;;;;;;;;;;;;;;;;;;;1050:13:34;;1034:12;:29;1026:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18222:388:1;;;;;:::o;14102:240::-;14158:21;14168:10;14158:9;:21::i;:::-;14150:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14237:52;;;;;;;;14263:3;14237:52;;;;;;14269:19;14286:1;14269:16;:19::i;:::-;14237:52;;;14204:18;:30;14223:10;14204:30;;;;;;;;;;;;;;;:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14329:3;14300:37;;;14335:1;14300:37;;;;;;;;;;;;;;;;;;14102:240::o;35862:147::-;35942:4;35961:43;35977:7;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;35961:15;:43::i;:::-;35954:50;;35862:147;;;:::o;8490:224::-;8548:21;8558:10;8548:9;:21::i;:::-;8540:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8595:23;8621:8;:20;8630:10;8621:20;;;;;;;;;;;;;;;8595:46;;8662:4;8647:7;:12;;:19;;;;;;;;;;;;:::i;:::-;;8692:10;8677:32;;;8704:4;8677:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;8677:32:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8490:224;;:::o;24571:252::-;24676:4;24703:18;24716:4;24703:12;:18::i;:::-;:115;;24780:38;24796:7;24805:6;24813:4;24780:15;:38::i;:::-;24703:115;;;24732:37;24747:7;24756:6;24764:4;24732:14;:37::i;:::-;24703:115;24690:128;;24571:252;;;;;:::o;6340:173::-;233:11:12;;;;;;;;;;;232:12;224:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;297:4;283:11;;:18;;;;;;;;;;;;;;;;;;6412:30:1;6431:10;6412:18;:30::i;:::-;6448:28;6460:15;6448:11;:28::i;:::-;6482:26;:24;:26::i;:::-;6340:173;:::o;25458:218::-;25514:14;25531;:26;25546:10;25531:26;;;;;;;;;;;;;;;:32;25558:4;25531:32;;;;;;;;;;;;;;;;;;;;;25514:49;;25612:1;25569:14;:26;25584:10;25569:26;;;;;;;;;;;;;;;:32;25596:4;25569:32;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;25646:10;25625:46;;;25658:6;25666:4;25625:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;25458:218;;:::o;11502:535::-;11567:21;11577:10;11567:9;:21::i;:::-;11559:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11630:20;:32;11651:10;11630:32;;;;;;;;;;;;;;;:39;;;;11622:5;:47;11614:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11706:17;11768:1;11726:20;:32;11747:10;11726:32;;;;;;;;;;;;;;;:39;;;;:43;11706:63;;11775:16;11794:20;:32;11815:10;11794:32;;;;;;;;;;;;;;;11827:5;11794:39;;;;;;;;;;;;;;;11775:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11881:20;:32;11902:10;11881:32;;;;;;;;;;;;;;;11914:9;11881:43;;;;;;;;;;;;;;;11839:20;:32;11860:10;11839:32;;;;;;;;;;;;;;;11872:5;11839:39;;;;;;;;;;;;;;;:85;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11930:20;:32;11951:10;11930:32;;;;;;;;;;;;;;;:41;;;;;;;;;;;;:::i;:::-;;12009:10;11982:50;;;12021:3;12026:5;11982:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;11982:50:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11502:535;;;:::o;3020:140::-;3079:81;;;;;;;;;;;;;;;;;;;3020:140;:::o;1970:107:159:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;30900:155:1:-;30957:4;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;30976:4;:18;:45;;;;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;30998:4;:23;30976:45;:74;;;;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;31025:4;:25;30976:74;30969:81;;30900:155;;;:::o;27128:266::-;27197:41;27213:10;27225:6;27233:4;27197:15;:41::i;:::-;27193:87;;;27248:25;27268:4;27248:19;:25::i;:::-;27193:87;27293:20;:32;27314:10;27293:32;;;;;;;;;;;;;;;:38;27326:4;27293:38;;;;;;;;;;;:46;27332:6;27293:46;;;;;;;;;;;;;;;;27286:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27384:4;27364:10;27350:39;;;27376:6;27350:39;;;;;;;;;;;;;;;;;;;;;;27128:266;;:::o;34401:187::-;34479:4;34498:18;34511:4;34498:12;:18::i;:::-;:85;;34552:31;34569:7;34578:4;34552:16;:31::i;:::-;34498:85;;;34519:30;34535:7;34544:4;34519:15;:30::i;:::-;34498:85;34491:92;;34401:187;;;;:::o;25917:564::-;25973:23;25999:8;:20;26008:10;25999:20;;;;;;;;;;;;;;;25973:46;;26026:14;3511:43;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3511:43:1;;;3501:54;;;;;;26050:4;:23;26046:375;;;26092:7;:15;;:25;;;;;;;;;;;;26083:34;;26161:1;26125:7;:15;;:25;;;:38;;;;;;;;;;;;;;;;;;26046:375;;;3606:45;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3606:45:1;;;3596:56;;;;;;26180:4;:25;26176:245;;;26224:7;:15;;:27;;;;;;;;;;;;26215:36;;26297:1;26259:7;:15;;:27;;;:40;;;;;;;;;;;;;;;;;;26176:245;;;3696:38;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3696:38:1;;;3686:49;;;;;;26316:4;:18;26312:109;;;26353:7;:15;;:20;;;;;;;;;;;;26344:29;;26412:1;26381:7;:15;;:20;;;:33;;;;;;;;;;;;;;;;;;26312:109;26176:245;26046:375;26451:10;26431:45;;;26463:6;26471:4;26431:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;25917:564;;;:::o;16790:361::-;16933:33;16950:6;16958:1;16961;16964;16933:16;:33::i;:::-;17021:71;;;;;;;;17058:4;17021:71;;;;;;17081:4;17021:71;;;;;16972:20;:32;16993:10;16972:32;;;;;;;;;;;;;;;:38;17005:4;16972:38;;;;;;;;;;;:46;17011:6;16972:46;;;;;;;;;;;;;;;:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17141:4;17121:10;17104:42;;;17133:6;17104:42;;;;;;;;;;;;;;;;;;;;;;16790:361;;;;;:::o;5236:143:23:-;5284:11;5322:8;;;;;;;;;;;:27;;;2467:30;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2467:30:23;;;2457:41;;;;;;5322:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5322:51:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5322:51:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5322:51:23;;;;;;;;;;;;;;;;5303:71;;5236:143;:::o;834:176:158:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;38833:113:1:-;38895:4;38916:8;:17;38925:7;38916:17;;;;;;;;;;;;;;;:24;;;;;;;;;;;;38915:25;38907:34;;38833:113;;;:::o;39979:213::-;40095:4;40149:1;40117:34;;:12;:20;40130:6;40117:20;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;:69;;;;40179:7;40155:31;;:12;:20;40168:6;40155:20;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;40117:69;40109:78;;39979:213;;;;:::o;28533:364::-;28619:7;28634:15;28652:12;:20;28665:6;28652:20;;;;;;;;;;;;;;;;;;;;;;;;;28634:38;;28701:1;28682:21;;:7;:21;;;28678:145;;28721:31;28730:7;28739:6;28747:4;28721:8;:31::i;:::-;28713:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28809:7;28802:14;;;;;28678:145;28837:17;28847:6;28837:9;:17::i;:::-;28829:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28886:6;28879:13;;;28533:364;;;;;:::o;788:96:155:-;833:15;867:10;860:17;;788:96;:::o;1502:94:7:-;1550:15;;:::i;:::-;1580:11;;;;;;;;1589:1;1580:11;;;1573:18;;1502:94;;;:::o;1180:97::-;1221:15;;:::i;:::-;1251:21;;;;;;;;996:25;1251:21;;;1244:28;;1180:97;:::o;9949:116::-;10023:4;10053:1;:7;;;10042:1;:7;;;:18;;10035:25;;9949:116;;;;:::o;42561:290:1:-;42680:14;42697:65;42724:10;42736;42748:4;42754:1;42757;42760;42697:26;:65::i;:::-;42680:82;;42786:10;42776:20;;:6;:20;;;42768:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42825:21;42835:10;42825:9;:21::i;:::-;42561:290;;;;;;:::o;39511:130::-;39581:4;39633:1;39601:34;;:12;:20;39614:6;39601:20;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;39593:43;;39511:130;;;:::o;1674:92:7:-;1732:7;1754:1;:7;;;1747:14;;1674:92;;;:::o;2178:225:159:-;2271:1;2251:22;;:8;:22;;;;2243:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2360:8;2331:38;;2352:6;;;;;;;;;;;2331:38;;;;;;;;;;;;2388:8;2379:6;;:17;;;;;;;;;;;;;;;;;;2178:225;:::o;40759:247:1:-;40850:14;40867:10;:29;40897:10;40909:1;40912;40915;40867:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;40867:50:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;40867:50:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;40867:50:1;;;;;;;;;;;;;;;;40850:67;;40941:10;40931:20;;:6;:20;;;40923:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40980:21;40990:10;40980:9;:21::i;:::-;40759:247;;;;;:::o;43075:348::-;43136:21;43146:10;43136:9;:21::i;:::-;43128:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43198:24;43211:10;43198:12;:24::i;:::-;:90;;;;;43226:62;43265:10;43277;43226:38;:62::i;:::-;43198:90;43183:191;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43408:10;43381:12;:24;43394:10;43381:24;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;43075:348;:::o;445:42980::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o",
+ "source": "pragma solidity ^0.5.13;\n\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/ownership/Ownable.sol\";\n\nimport \"./interfaces/IAccounts.sol\";\n\nimport \"../common/FixidityLib.sol\";\nimport \"../common/Initializable.sol\";\nimport \"../common/interfaces/ICeloVersionedContract.sol\";\nimport \"../common/Signatures.sol\";\nimport \"../common/UsingRegistry.sol\";\nimport \"../common/libraries/ReentrancyGuard.sol\";\n\ncontract Accounts is\n IAccounts,\n ICeloVersionedContract,\n Ownable,\n ReentrancyGuard,\n Initializable,\n UsingRegistry\n{\n using FixidityLib for FixidityLib.Fraction;\n using SafeMath for uint256;\n\n struct Signers {\n // The address that is authorized to vote in governance and validator elections on behalf of the\n // account. The account can vote as well, whether or not a vote signing key has been specified.\n address vote;\n // The address that is authorized to manage a validator or validator group and sign consensus\n // messages on behalf of the account. The account can manage the validator, whether or not a\n // validator signing key has been specified. However, if a validator signing key has been\n // specified, only that key may actually participate in consensus.\n address validator;\n // The address of the key with which this account wants to sign attestations on the Attestations\n // contract\n address attestation;\n }\n\n struct SignerAuthorization {\n bool started;\n bool completed;\n }\n\n struct Account {\n bool exists;\n // [Deprecated] Each account may authorize signing keys to use for voting,\n // validating or attestation. These keys may not be keys of other accounts,\n // and may not be authorized by any other account for any purpose.\n Signers signers;\n // The address at which the account expects to receive transfers. If it's empty/0x0, the\n // account indicates that an address exchange should be initiated with the dataEncryptionKey\n address walletAddress;\n // An optional human readable identifier for the account\n string name;\n // The ECDSA public key used to encrypt and decrypt data for this account\n bytes dataEncryptionKey;\n // The URL under which an account adds metadata and claims\n string metadataURL;\n }\n\n struct PaymentDelegation {\n // Address that should receive a fraction of validator payments.\n address beneficiary;\n // Fraction of payment to delegate to `beneficiary`.\n FixidityLib.Fraction fraction;\n }\n\n mapping(address => Account) internal accounts;\n // Maps authorized signers to the account that provided the authorization.\n mapping(address => address) public authorizedBy;\n // Default signers by account (replaces the legacy Signers struct on Account)\n mapping(address => mapping(bytes32 => address)) defaultSigners;\n // All signers and their roles for a given account\n // solhint-disable-next-line max-line-length\n mapping(address => mapping(bytes32 => mapping(address => SignerAuthorization))) signerAuthorizations;\n\n bytes32 public constant EIP712_AUTHORIZE_SIGNER_TYPEHASH = keccak256(\n \"AuthorizeSigner(address account,address signer,bytes32 role)\"\n );\n bytes32 public eip712DomainSeparator;\n\n // A per-account list of CIP8 storage roots, bypassing CIP3.\n mapping(address => bytes[]) public offchainStorageRoots;\n\n // Optional per-account validator payment delegation information.\n mapping(address => PaymentDelegation) internal paymentDelegations;\n\n bytes32 constant ValidatorSigner = keccak256(abi.encodePacked(\"celo.org/core/validator\"));\n bytes32 constant AttestationSigner = keccak256(abi.encodePacked(\"celo.org/core/attestation\"));\n bytes32 constant VoteSigner = keccak256(abi.encodePacked(\"celo.org/core/vote\"));\n\n event AttestationSignerAuthorized(address indexed account, address signer);\n event VoteSignerAuthorized(address indexed account, address signer);\n event ValidatorSignerAuthorized(address indexed account, address signer);\n event SignerAuthorized(address indexed account, address signer, bytes32 indexed role);\n event SignerAuthorizationStarted(address indexed account, address signer, bytes32 indexed role);\n event SignerAuthorizationCompleted(address indexed account, address signer, bytes32 indexed role);\n event AttestationSignerRemoved(address indexed account, address oldSigner);\n event VoteSignerRemoved(address indexed account, address oldSigner);\n event ValidatorSignerRemoved(address indexed account, address oldSigner);\n event IndexedSignerSet(address indexed account, address signer, bytes32 role);\n event IndexedSignerRemoved(address indexed account, address oldSigner, bytes32 role);\n event DefaultSignerSet(address indexed account, address signer, bytes32 role);\n event DefaultSignerRemoved(address indexed account, address oldSigner, bytes32 role);\n event LegacySignerSet(address indexed account, address signer, bytes32 role);\n event LegacySignerRemoved(address indexed account, address oldSigner, bytes32 role);\n event SignerRemoved(address indexed account, address oldSigner, bytes32 indexed role);\n event AccountDataEncryptionKeySet(address indexed account, bytes dataEncryptionKey);\n event AccountNameSet(address indexed account, string name);\n event AccountMetadataURLSet(address indexed account, string metadataURL);\n event AccountWalletAddressSet(address indexed account, address walletAddress);\n event AccountCreated(address indexed account);\n event OffchainStorageRootAdded(address indexed account, bytes url);\n event OffchainStorageRootRemoved(address indexed account, bytes url, uint256 index);\n event PaymentDelegationSet(address indexed beneficiary, uint256 fraction);\n\n /**\n * @notice Sets initialized == true on implementation contracts\n * @param test Set to true to skip implementation initialization\n */\n constructor(bool test) public Initializable(test) {}\n\n /**\n * @notice Returns the storage, major, minor, and patch version of the contract.\n * @return The storage, major, minor, and patch version of the contract.\n */\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) {\n return (1, 1, 4, 0);\n }\n\n /**\n * @notice Used in place of the constructor to allow the contract to be upgradable via proxy.\n * @param registryAddress The address of the registry core smart contract.\n */\n function initialize(address registryAddress) external initializer {\n _transferOwnership(msg.sender);\n setRegistry(registryAddress);\n setEip712DomainSeparator();\n }\n\n /**\n * @notice Sets the EIP712 domain separator for the Celo Accounts abstraction.\n */\n function setEip712DomainSeparator() public {\n uint256 chainId;\n assembly {\n chainId := chainid\n }\n\n eip712DomainSeparator = keccak256(\n abi.encode(\n keccak256(\n \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"\n ),\n keccak256(bytes(\"Celo Core Contracts\")),\n keccak256(\"1.0\"),\n chainId,\n address(this)\n )\n );\n }\n\n /**\n * @notice Convenience Setter for the dataEncryptionKey and wallet address for an account\n * @param name A string to set as the name of the account\n * @param dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed.\n * @param walletAddress The wallet address to set for the account\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @dev v, r, s constitute `signer`'s signature on `msg.sender` (unless the wallet address\n * is 0x0 or msg.sender).\n */\n function setAccount(\n string calldata name,\n bytes calldata dataEncryptionKey,\n address walletAddress,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external {\n if (!isAccount(msg.sender)) {\n createAccount();\n }\n setName(name);\n setAccountDataEncryptionKey(dataEncryptionKey);\n setWalletAddress(walletAddress, v, r, s);\n }\n\n /**\n * @notice Creates an account.\n * @return True if account creation succeeded.\n */\n function createAccount() public returns (bool) {\n require(isNotAccount(msg.sender) && isNotAuthorizedSigner(msg.sender), \"Account exists\");\n Account storage account = accounts[msg.sender];\n account.exists = true;\n emit AccountCreated(msg.sender);\n return true;\n }\n\n /**\n * @notice Setter for the name of an account.\n * @param name The name to set.\n */\n function setName(string memory name) public {\n require(isAccount(msg.sender), \"Unknown account\");\n Account storage account = accounts[msg.sender];\n account.name = name;\n emit AccountNameSet(msg.sender, name);\n }\n\n /**\n * @notice Setter for the wallet address for an account\n * @param walletAddress The wallet address to set for the account\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @dev Wallet address can be zero. This means that the owner of the wallet\n * does not want to be paid directly without interaction, and instead wants users to\n * contact them, using the data encryption key, and arrange a payment.\n * @dev v, r, s constitute `signer`'s signature on `msg.sender` (unless the wallet address\n * is 0x0 or msg.sender).\n */\n function setWalletAddress(address walletAddress, uint8 v, bytes32 r, bytes32 s) public {\n require(isAccount(msg.sender), \"Unknown account\");\n if (!(walletAddress == msg.sender || walletAddress == address(0x0))) {\n address signer = Signatures.getSignerOfAddress(msg.sender, v, r, s);\n require(signer == walletAddress, \"Invalid signature\");\n }\n Account storage account = accounts[msg.sender];\n account.walletAddress = walletAddress;\n emit AccountWalletAddressSet(msg.sender, walletAddress);\n }\n\n /**\n * @notice Setter for the data encryption key and version.\n * @param dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed.\n */\n function setAccountDataEncryptionKey(bytes memory dataEncryptionKey) public {\n require(dataEncryptionKey.length >= 33, \"data encryption key length <= 32\");\n Account storage account = accounts[msg.sender];\n account.dataEncryptionKey = dataEncryptionKey;\n emit AccountDataEncryptionKeySet(msg.sender, dataEncryptionKey);\n }\n\n /**\n * @notice Setter for the metadata of an account.\n * @param metadataURL The URL to access the metadata.\n */\n function setMetadataURL(string calldata metadataURL) external {\n require(isAccount(msg.sender), \"Unknown account\");\n Account storage account = accounts[msg.sender];\n account.metadataURL = metadataURL;\n emit AccountMetadataURLSet(msg.sender, metadataURL);\n }\n\n /**\n * @notice Adds a new CIP8 storage root.\n * @param url The URL pointing to the offchain storage root.\n */\n function addStorageRoot(bytes calldata url) external {\n require(isAccount(msg.sender), \"Unknown account\");\n offchainStorageRoots[msg.sender].push(url);\n emit OffchainStorageRootAdded(msg.sender, url);\n }\n\n /**\n * @notice Removes a CIP8 storage root.\n * @param index The index of the storage root to be removed in the account's\n * list of storage roots.\n * @dev The order of storage roots may change after this operation (the last\n * storage root will be moved to `index`), be aware of this if removing\n * multiple storage roots at a time.\n */\n function removeStorageRoot(uint256 index) external {\n require(isAccount(msg.sender), \"Unknown account\");\n require(index < offchainStorageRoots[msg.sender].length, \"Invalid storage root index\");\n uint256 lastIndex = offchainStorageRoots[msg.sender].length - 1;\n bytes memory url = offchainStorageRoots[msg.sender][index];\n offchainStorageRoots[msg.sender][index] = offchainStorageRoots[msg.sender][lastIndex];\n offchainStorageRoots[msg.sender].length--;\n emit OffchainStorageRootRemoved(msg.sender, url, index);\n }\n\n /**\n * @notice Returns the full list of offchain storage roots for an account.\n * @param account The account whose storage roots to return.\n * @return List of storage root URLs.\n */\n function getOffchainStorageRoots(address account)\n external\n view\n returns (bytes memory, uint256[] memory)\n {\n require(isAccount(account), \"Unknown account\");\n uint256 numberRoots = offchainStorageRoots[account].length;\n uint256 totalLength = 0;\n for (uint256 i = 0; i < numberRoots; i++) {\n totalLength = totalLength.add(offchainStorageRoots[account][i].length);\n }\n\n bytes memory concatenated = new bytes(totalLength);\n uint256 lastIndex = 0;\n uint256[] memory lengths = new uint256[](numberRoots);\n for (uint256 i = 0; i < numberRoots; i++) {\n bytes storage root = offchainStorageRoots[account][i];\n lengths[i] = root.length;\n for (uint256 j = 0; j < lengths[i]; j++) {\n concatenated[lastIndex] = root[j];\n lastIndex++;\n }\n }\n\n return (concatenated, lengths);\n }\n\n /**\n * @notice Sets validator payment delegation settings.\n * @param beneficiary The address that should receive a portion of validator\n * payments.\n * @param fraction The fraction of the validator's payment that should be\n * diverted to `beneficiary` every epoch, given as FixidityLib value. Must not\n * be greater than 1.\n * @dev Use `deletePaymentDelegation` to unset the payment delegation.\n */\n function setPaymentDelegation(address beneficiary, uint256 fraction) public {\n require(isAccount(msg.sender), \"Not an account\");\n require(beneficiary != address(0), \"Beneficiary cannot be address 0x0\");\n FixidityLib.Fraction memory f = FixidityLib.wrap(fraction);\n require(f.lte(FixidityLib.fixed1()), \"Fraction must not be greater than 1\");\n paymentDelegations[msg.sender] = PaymentDelegation(beneficiary, f);\n emit PaymentDelegationSet(beneficiary, fraction);\n }\n\n /**\n * @notice Removes a validator's payment delegation by setting benficiary and\n * fraction to 0.\n */\n function deletePaymentDelegation() public {\n require(isAccount(msg.sender), \"Not an account\");\n paymentDelegations[msg.sender] = PaymentDelegation(address(0x0), FixidityLib.wrap(0));\n emit PaymentDelegationSet(address(0x0), 0);\n }\n\n /**\n * @notice Gets validator payment delegation settings.\n * @param account Account of the validator.\n * @return Beneficiary address and fraction of payment delegated.\n */\n function getPaymentDelegation(address account) external view returns (address, uint256) {\n PaymentDelegation storage delegation = paymentDelegations[account];\n return (delegation.beneficiary, delegation.fraction.unwrap());\n }\n\n /**\n * @notice Set the indexed signer for a specific role\n * @param signer the address to set as default\n * @param role the role to register a default signer for\n */\n function setIndexedSigner(address signer, bytes32 role) public {\n require(isAccount(msg.sender), \"Not an account\");\n require(isNotAccount(signer), \"Cannot authorize account as signer\");\n require(\n isNotAuthorizedSignerForAnotherAccount(msg.sender, signer),\n \"Not a signer for this account\"\n );\n require(isSigner(msg.sender, signer, role), \"Must authorize signer before setting as default\");\n\n Account storage account = accounts[msg.sender];\n if (isLegacyRole(role)) {\n if (role == VoteSigner) {\n account.signers.vote = signer;\n } else if (role == AttestationSigner) {\n account.signers.attestation = signer;\n } else if (role == ValidatorSigner) {\n account.signers.validator = signer;\n }\n emit LegacySignerSet(msg.sender, signer, role);\n } else {\n defaultSigners[msg.sender][role] = signer;\n emit DefaultSignerSet(msg.sender, signer, role);\n }\n\n emit IndexedSignerSet(msg.sender, signer, role);\n }\n\n /**\n * @notice Authorizes an address to act as a signer, for `role`, on behalf of the account.\n * @param signer The address of the signing key to authorize.\n * @param role The role to authorize signing for.\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @dev v, r, s constitute `signer`'s EIP712 signature over `role`, `msg.sender` \n * and `signer`.\n */\n function authorizeSignerWithSignature(address signer, bytes32 role, uint8 v, bytes32 r, bytes32 s)\n public\n {\n authorizeAddressWithRole(signer, role, v, r, s);\n signerAuthorizations[msg.sender][role][signer] = SignerAuthorization({\n started: true,\n completed: true\n });\n\n emit SignerAuthorized(msg.sender, signer, role);\n }\n\n function legacyAuthorizeSignerWithSignature(\n address signer,\n bytes32 role,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) private {\n authorizeAddress(signer, v, r, s);\n signerAuthorizations[msg.sender][role][signer] = SignerAuthorization({\n started: true,\n completed: true\n });\n\n emit SignerAuthorized(msg.sender, signer, role);\n }\n\n /**\n * @notice Authorizes an address to sign votes on behalf of the account.\n * @param signer The address of the signing key to authorize.\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @dev v, r, s constitute `signer`'s signature on `msg.sender`.\n */\n function authorizeVoteSigner(address signer, uint8 v, bytes32 r, bytes32 s)\n external\n nonReentrant\n {\n legacyAuthorizeSignerWithSignature(signer, VoteSigner, v, r, s);\n setIndexedSigner(signer, VoteSigner);\n\n emit VoteSignerAuthorized(msg.sender, signer);\n }\n\n /**\n * @notice Authorizes an address to sign consensus messages on behalf of the account.\n * @param signer The address of the signing key to authorize.\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @dev v, r, s constitute `signer`'s signature on `msg.sender`.\n */\n function authorizeValidatorSigner(address signer, uint8 v, bytes32 r, bytes32 s)\n external\n nonReentrant\n {\n legacyAuthorizeSignerWithSignature(signer, ValidatorSigner, v, r, s);\n setIndexedSigner(signer, ValidatorSigner);\n\n require(!getValidators().isValidator(msg.sender), \"Cannot authorize validator signer\");\n emit ValidatorSignerAuthorized(msg.sender, signer);\n }\n\n /**\n * @notice Authorizes an address to sign consensus messages on behalf of the account.\n * @param signer The address of the signing key to authorize.\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @param ecdsaPublicKey The ECDSA public key corresponding to `signer`.\n * @dev v, r, s constitute `signer`'s signature on `msg.sender`.\n */\n function authorizeValidatorSignerWithPublicKey(\n address signer,\n uint8 v,\n bytes32 r,\n bytes32 s,\n bytes calldata ecdsaPublicKey\n ) external nonReentrant {\n legacyAuthorizeSignerWithSignature(signer, ValidatorSigner, v, r, s);\n setIndexedSigner(signer, ValidatorSigner);\n\n require(\n getValidators().updateEcdsaPublicKey(msg.sender, signer, ecdsaPublicKey),\n \"Failed to update ECDSA public key\"\n );\n emit ValidatorSignerAuthorized(msg.sender, signer);\n }\n\n /**\n * @notice Authorizes an address to sign consensus messages on behalf of the account.\n * @param signer The address of the signing key to authorize.\n * @param ecdsaPublicKey The ECDSA public key corresponding to `signer`.\n * @param blsPublicKey The BLS public key that the validator is using for consensus, should pass\n * proof of possession. 96 bytes.\n * @param blsPop The BLS public key proof-of-possession, which consists of a signature on the\n * account address. 48 bytes.\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @dev v, r, s constitute `signer`'s signature on `msg.sender`.\n */\n function authorizeValidatorSignerWithKeys(\n address signer,\n uint8 v,\n bytes32 r,\n bytes32 s,\n bytes calldata ecdsaPublicKey,\n bytes calldata blsPublicKey,\n bytes calldata blsPop\n ) external nonReentrant {\n legacyAuthorizeSignerWithSignature(signer, ValidatorSigner, v, r, s);\n setIndexedSigner(signer, ValidatorSigner);\n\n require(\n getValidators().updatePublicKeys(msg.sender, signer, ecdsaPublicKey, blsPublicKey, blsPop),\n \"Failed to update validator keys\"\n );\n emit ValidatorSignerAuthorized(msg.sender, signer);\n }\n\n /**\n * @notice Authorizes an address to sign attestations on behalf of the account.\n * @param signer The address of the signing key to authorize.\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @dev v, r, s constitute `signer`'s signature on `msg.sender`.\n */\n function authorizeAttestationSigner(address signer, uint8 v, bytes32 r, bytes32 s) public {\n legacyAuthorizeSignerWithSignature(signer, AttestationSigner, v, r, s);\n setIndexedSigner(signer, AttestationSigner);\n\n emit AttestationSignerAuthorized(msg.sender, signer);\n }\n\n /**\n * @notice Begin the process of authorizing an address to sign on behalf of the account\n * @param signer The address of the signing key to authorize.\n * @param role The role to authorize signing for.\n */\n function authorizeSigner(address signer, bytes32 role) public {\n require(isAccount(msg.sender), \"Unknown account\");\n require(\n isNotAccount(signer) && isNotAuthorizedSignerForAnotherAccount(msg.sender, signer),\n \"Cannot re-authorize address signer\"\n );\n\n signerAuthorizations[msg.sender][role][signer] = SignerAuthorization({\n started: true,\n completed: false\n });\n emit SignerAuthorizationStarted(msg.sender, signer, role);\n }\n\n /**\n * @notice Finish the process of authorizing an address to sign on behalf of the account. \n * @param account The address of account that authorized signing.\n * @param role The role to finish authorizing for.\n */\n function completeSignerAuthorization(address account, bytes32 role) public {\n require(isAccount(account), \"Unknown account\");\n require(\n isNotAccount(msg.sender) && isNotAuthorizedSignerForAnotherAccount(account, msg.sender),\n \"Cannot re-authorize address signer\"\n );\n require(\n signerAuthorizations[account][role][msg.sender].started == true,\n \"Signer authorization not started\"\n );\n\n authorizedBy[msg.sender] = account;\n signerAuthorizations[account][role][msg.sender].completed = true;\n emit SignerAuthorizationCompleted(account, msg.sender, role);\n }\n\n /**\n * @notice Whether or not the signer has been registered as the legacy signer for role\n * @param _account The address of account that authorized signing.\n * @param signer The address of the signer.\n * @param role The role that has been authorized.\n */\n function isLegacySigner(address _account, address signer, bytes32 role)\n public\n view\n returns (bool)\n {\n Account storage account = accounts[_account];\n if (role == ValidatorSigner && account.signers.validator == signer) {\n return true;\n } else if (role == AttestationSigner && account.signers.attestation == signer) {\n return true;\n } else if (role == VoteSigner && account.signers.vote == signer) {\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @notice Whether or not the signer has been registered as the default signer for role\n * @param account The address of account that authorized signing.\n * @param signer The address of the signer.\n * @param role The role that has been authorized.\n */\n function isDefaultSigner(address account, address signer, bytes32 role)\n public\n view\n returns (bool)\n {\n return defaultSigners[account][role] == signer;\n }\n\n /**\n * @notice Whether or not the signer has been registered as an indexed signer for role\n * @param account The address of account that authorized signing.\n * @param signer The address of the signer.\n * @param role The role that has been authorized.\n */\n function isIndexedSigner(address account, address signer, bytes32 role)\n public\n view\n returns (bool)\n {\n return\n isLegacyRole(role)\n ? isLegacySigner(account, signer, role)\n : isDefaultSigner(account, signer, role);\n }\n\n /**\n * @notice Whether or not the signer has been registered as a signer for role\n * @param account The address of account that authorized signing.\n * @param signer The address of the signer.\n * @param role The role that has been authorized.\n */\n function isSigner(address account, address signer, bytes32 role) public view returns (bool) {\n return\n isLegacySigner(account, signer, role) ||\n (signerAuthorizations[account][role][signer].completed && authorizedBy[signer] == account);\n }\n\n /**\n * @notice Removes the signer for a default role.\n * @param role The role that has been authorized.\n */\n function removeDefaultSigner(bytes32 role) public {\n address signer = defaultSigners[msg.sender][role];\n defaultSigners[msg.sender][role] = address(0);\n emit DefaultSignerRemoved(msg.sender, signer, role);\n }\n\n /**\n * @notice Remove one of the Validator, Attestation or \n * Vote signers from an account. Should only be called from\n * methods that check the role is a legacy signer.\n * @param role The role that has been authorized.\n */\n function removeLegacySigner(bytes32 role) private {\n Account storage account = accounts[msg.sender];\n\n address signer;\n if (role == ValidatorSigner) {\n signer = account.signers.validator;\n account.signers.validator = address(0);\n } else if (role == AttestationSigner) {\n signer = account.signers.attestation;\n account.signers.attestation = address(0);\n } else if (role == VoteSigner) {\n signer = account.signers.vote;\n account.signers.vote = address(0);\n }\n emit LegacySignerRemoved(msg.sender, signer, role);\n }\n\n /**\n * @notice Removes the currently authorized and indexed signer \n * for a specific role\n * @param role The role of the signer.\n */\n function removeIndexedSigner(bytes32 role) public {\n address oldSigner = getIndexedSigner(msg.sender, role);\n isLegacyRole(role) ? removeLegacySigner(role) : removeDefaultSigner(role);\n\n emit IndexedSignerRemoved(msg.sender, oldSigner, role);\n }\n\n /**\n * @notice Removes the currently authorized signer for a specific role and \n * if the signer is indexed, remove that as well.\n * @param signer The address of the signer.\n * @param role The role that has been authorized.\n */\n function removeSigner(address signer, bytes32 role) public {\n if (isIndexedSigner(msg.sender, signer, role)) {\n removeIndexedSigner(role);\n }\n\n delete signerAuthorizations[msg.sender][role][signer];\n emit SignerRemoved(msg.sender, signer, role);\n }\n\n /**\n * @notice Removes the currently authorized vote signer for the account.\n * Note that the signers cannot be reauthorized after they have been removed.\n */\n function removeVoteSigner() public {\n address signer = getLegacySigner(msg.sender, VoteSigner);\n removeSigner(signer, VoteSigner);\n emit VoteSignerRemoved(msg.sender, signer);\n }\n\n /**\n * @notice Removes the currently authorized validator signer for the account\n * Note that the signers cannot be reauthorized after they have been removed.\n */\n function removeValidatorSigner() public {\n address signer = getLegacySigner(msg.sender, ValidatorSigner);\n removeSigner(signer, ValidatorSigner);\n emit ValidatorSignerRemoved(msg.sender, signer);\n }\n\n /**\n * @notice Removes the currently authorized attestation signer for the account\n * Note that the signers cannot be reauthorized after they have been removed.\n */\n function removeAttestationSigner() public {\n address signer = getLegacySigner(msg.sender, AttestationSigner);\n removeSigner(signer, AttestationSigner);\n emit AttestationSignerRemoved(msg.sender, signer);\n }\n\n function signerToAccountWithRole(address signer, bytes32 role) internal view returns (address) {\n address account = authorizedBy[signer];\n if (account != address(0)) {\n require(isSigner(account, signer, role), \"not active authorized signer for role\");\n return account;\n }\n\n require(isAccount(signer), \"not an account\");\n return signer;\n }\n\n /**\n * @notice Returns the account associated with `signer`.\n * @param signer The address of the account or currently authorized attestation signer.\n * @dev Fails if the `signer` is not an account or currently authorized attestation signer.\n * @return The associated account.\n */\n function attestationSignerToAccount(address signer) external view returns (address) {\n return signerToAccountWithRole(signer, AttestationSigner);\n }\n\n /**\n * @notice Returns the account associated with `signer`.\n * @param signer The address of an account or currently authorized validator signer.\n * @dev Fails if the `signer` is not an account or currently authorized validator.\n * @return The associated account.\n */\n function validatorSignerToAccount(address signer) public view returns (address) {\n return signerToAccountWithRole(signer, ValidatorSigner);\n }\n\n /**\n * @notice Returns the account associated with `signer`.\n * @param signer The address of the account or currently authorized vote signer.\n * @dev Fails if the `signer` is not an account or currently authorized vote signer.\n * @return The associated account.\n */\n function voteSignerToAccount(address signer) external view returns (address) {\n return signerToAccountWithRole(signer, VoteSigner);\n }\n\n /**\n * @notice Returns the account associated with `signer`.\n * @param signer The address of the account or previously authorized signer.\n * @dev Fails if the `signer` is not an account or previously authorized signer.\n * @return The associated account.\n */\n function signerToAccount(address signer) external view returns (address) {\n address authorizingAccount = authorizedBy[signer];\n if (authorizingAccount != address(0)) {\n return authorizingAccount;\n } else {\n require(isAccount(signer), \"Not an account\");\n return signer;\n }\n }\n\n /**\n * @notice Checks whether the role is one of Vote, Validator or Attestation\n * @param role The role to check\n */\n function isLegacyRole(bytes32 role) public pure returns (bool) {\n return role == VoteSigner || role == ValidatorSigner || role == AttestationSigner;\n }\n\n /**\n * @notice Returns the legacy signer for the specified account and \n * role. If no signer has been specified it will return the account itself.\n * @param _account The address of the account.\n * @param role The role of the signer.\n */\n function getLegacySigner(address _account, bytes32 role) public view returns (address) {\n require(isLegacyRole(role), \"Role is not a legacy signer\");\n\n Account storage account = accounts[_account];\n address signer;\n if (role == ValidatorSigner) {\n signer = account.signers.validator;\n } else if (role == AttestationSigner) {\n signer = account.signers.attestation;\n } else if (role == VoteSigner) {\n signer = account.signers.vote;\n }\n\n return signer == address(0) ? _account : signer;\n }\n\n /**\n * @notice Returns the default signer for the specified account and \n * role. If no signer has been specified it will return the account itself.\n * @param account The address of the account.\n * @param role The role of the signer.\n */\n function getDefaultSigner(address account, bytes32 role) public view returns (address) {\n address defaultSigner = defaultSigners[account][role];\n return defaultSigner == address(0) ? account : defaultSigner;\n }\n\n /**\n * @notice Returns the indexed signer for the specified account and role. \n * If no signer has been specified it will return the account itself.\n * @param account The address of the account.\n * @param role The role of the signer.\n */\n function getIndexedSigner(address account, bytes32 role) public view returns (address) {\n return isLegacyRole(role) ? getLegacySigner(account, role) : getDefaultSigner(account, role);\n }\n\n /**\n * @notice Returns the vote signer for the specified account.\n * @param account The address of the account.\n * @return The address with which the account can sign votes.\n */\n function getVoteSigner(address account) public view returns (address) {\n return getLegacySigner(account, VoteSigner);\n }\n\n /**\n * @notice Returns the validator signer for the specified account.\n * @param account The address of the account.\n * @return The address with which the account can register a validator or group.\n */\n function getValidatorSigner(address account) public view returns (address) {\n return getLegacySigner(account, ValidatorSigner);\n }\n\n /**\n * @notice Returns the attestation signer for the specified account.\n * @param account The address of the account.\n * @return The address with which the account can sign attestations.\n */\n function getAttestationSigner(address account) public view returns (address) {\n return getLegacySigner(account, AttestationSigner);\n }\n\n /**\n * @notice Checks whether or not the account has an indexed signer\n * registered for one of the legacy roles\n */\n function hasLegacySigner(address account, bytes32 role) public view returns (bool) {\n return getLegacySigner(account, role) != account;\n }\n\n /**\n * @notice Checks whether or not the account has an indexed signer\n * registered for a role\n */\n function hasDefaultSigner(address account, bytes32 role) public view returns (bool) {\n return getDefaultSigner(account, role) != account;\n }\n\n /**\n * @notice Checks whether or not the account has an indexed signer\n * registered for the role\n */\n function hasIndexedSigner(address account, bytes32 role) public view returns (bool) {\n return isLegacyRole(role) ? hasLegacySigner(account, role) : hasDefaultSigner(account, role);\n }\n\n /**\n * @notice Checks whether or not the account has a signer\n * registered for the plaintext role.\n * @dev See `hasIndexedSigner` for more gas efficient call.\n */\n function hasAuthorizedSigner(address account, string calldata role) external view returns (bool) {\n return hasIndexedSigner(account, keccak256(abi.encodePacked(role)));\n }\n\n /**\n * @notice Returns if account has specified a dedicated vote signer.\n * @param account The address of the account.\n * @return Whether the account has specified a dedicated vote signer.\n */\n function hasAuthorizedVoteSigner(address account) external view returns (bool) {\n return hasLegacySigner(account, VoteSigner);\n }\n\n /**\n * @notice Returns if account has specified a dedicated validator signer.\n * @param account The address of the account.\n * @return Whether the account has specified a dedicated validator signer.\n */\n function hasAuthorizedValidatorSigner(address account) external view returns (bool) {\n return hasLegacySigner(account, ValidatorSigner);\n }\n\n /**\n * @notice Returns if account has specified a dedicated attestation signer.\n * @param account The address of the account.\n * @return Whether the account has specified a dedicated attestation signer.\n */\n function hasAuthorizedAttestationSigner(address account) external view returns (bool) {\n return hasLegacySigner(account, AttestationSigner);\n }\n\n /**\n * @notice Getter for the name of an account.\n * @param account The address of the account to get the name for.\n * @return name The name of the account.\n */\n function getName(address account) external view returns (string memory) {\n return accounts[account].name;\n }\n\n /**\n * @notice Getter for the metadata of an account.\n * @param account The address of the account to get the metadata for.\n * @return metadataURL The URL to access the metadata.\n */\n function getMetadataURL(address account) external view returns (string memory) {\n return accounts[account].metadataURL;\n }\n\n /**\n * @notice Getter for the metadata of multiple accounts.\n * @param accountsToQuery The addresses of the accounts to get the metadata for.\n * @return (stringLengths[] - the length of each string in bytes\n * data - all strings concatenated\n * )\n */\n function batchGetMetadataURL(address[] calldata accountsToQuery)\n external\n view\n returns (uint256[] memory, bytes memory)\n {\n uint256 totalSize = 0;\n uint256[] memory sizes = new uint256[](accountsToQuery.length);\n for (uint256 i = 0; i < accountsToQuery.length; i = i.add(1)) {\n sizes[i] = bytes(accounts[accountsToQuery[i]].metadataURL).length;\n totalSize = totalSize.add(sizes[i]);\n }\n\n bytes memory data = new bytes(totalSize);\n uint256 pointer = 0;\n for (uint256 i = 0; i < accountsToQuery.length; i = i.add(1)) {\n for (uint256 j = 0; j < sizes[i]; j = j.add(1)) {\n data[pointer] = bytes(accounts[accountsToQuery[i]].metadataURL)[j];\n pointer = pointer.add(1);\n }\n }\n return (sizes, data);\n }\n\n /**\n * @notice Getter for the data encryption key and version.\n * @param account The address of the account to get the key for\n * @return dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed.\n */\n function getDataEncryptionKey(address account) external view returns (bytes memory) {\n return accounts[account].dataEncryptionKey;\n }\n\n /**\n * @notice Getter for the wallet address for an account\n * @param account The address of the account to get the wallet address for\n * @return Wallet address\n */\n function getWalletAddress(address account) external view returns (address) {\n return accounts[account].walletAddress;\n }\n\n /**\n * @notice Check if an account already exists.\n * @param account The address of the account\n * @return Returns `true` if account exists. Returns `false` otherwise.\n */\n function isAccount(address account) public view returns (bool) {\n return (accounts[account].exists);\n }\n\n /**\n * @notice Check if an account already exists.\n * @param account The address of the account\n * @return Returns `false` if account exists. Returns `true` otherwise.\n */\n function isNotAccount(address account) internal view returns (bool) {\n return (!accounts[account].exists);\n }\n\n /**\n * @notice Check if an address has been an authorized signer for an account.\n * @param signer The possibly authorized address.\n * @return Returns `true` if authorized. Returns `false` otherwise.\n */\n function isAuthorizedSigner(address signer) external view returns (bool) {\n return (authorizedBy[signer] != address(0));\n }\n\n /**\n * @notice Check if an address has not been an authorized signer for an account.\n * @param signer The possibly authorized address.\n * @return Returns `false` if authorized. Returns `true` otherwise.\n */\n function isNotAuthorizedSigner(address signer) internal view returns (bool) {\n return (authorizedBy[signer] == address(0));\n }\n\n /**\n * @notice Check if `signer` has not been authorized, and if it has been previously\n * authorized that it was authorized by `account`.\n * @param account The authorizing account address.\n * @param signer The possibly authorized address.\n * @return Returns `false` if authorized. Returns `true` otherwise.\n */\n function isNotAuthorizedSignerForAnotherAccount(address account, address signer)\n internal\n view\n returns (bool)\n {\n return (authorizedBy[signer] == address(0) || authorizedBy[signer] == account);\n }\n\n /**\n * @notice Authorizes some role of `msg.sender`'s account to another address.\n * @param authorized The address to authorize.\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @dev Fails if the address is already authorized to another account or is an account itself.\n * @dev Note that once an address is authorized, it may never be authorized again.\n * @dev v, r, s constitute `authorized`'s signature on `msg.sender`.\n */\n function authorizeAddress(address authorized, uint8 v, bytes32 r, bytes32 s) private {\n address signer = Signatures.getSignerOfAddress(msg.sender, v, r, s);\n require(signer == authorized, \"Invalid signature\");\n\n authorize(authorized);\n }\n\n /**\n * @notice Returns the address that signed the provided role authorization.\n * @param account The `account` property signed over in the EIP712 signature\n * @param signer The `signer` property signed over in the EIP712 signature\n * @param role The `role` property signed over in the EIP712 signature\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @return The address that signed the provided role authorization.\n */\n function getRoleAuthorizationSigner(\n address account,\n address signer,\n bytes32 role,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public view returns (address) {\n bytes32 structHash = keccak256(\n abi.encode(EIP712_AUTHORIZE_SIGNER_TYPEHASH, account, signer, role)\n );\n return Signatures.getSignerOfTypedDataHash(eip712DomainSeparator, structHash, v, r, s);\n }\n\n /**\n * @notice Authorizes a role of `msg.sender`'s account to another address (`authorized`).\n * @param authorized The address to authorize.\n * @param role The role to authorize.\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @dev Fails if the address is already authorized to another account or is an account itself.\n * @dev Note that this signature is EIP712 compliant over the authorizing `account` \n * (`msg.sender`), `signer` (`authorized`) and `role`.\n */\n function authorizeAddressWithRole(address authorized, bytes32 role, uint8 v, bytes32 r, bytes32 s)\n private\n {\n address signer = getRoleAuthorizationSigner(msg.sender, authorized, role, v, r, s);\n require(signer == authorized, \"Invalid signature\");\n\n authorize(authorized);\n }\n\n /**\n * @notice Authorizes an address to `msg.sender`'s account\n * @param authorized The address to authorize.\n * @dev Fails if the address is already authorized for another account or is an account itself.\n */\n function authorize(address authorized) private {\n require(isAccount(msg.sender), \"Unknown account\");\n require(\n isNotAccount(authorized) && isNotAuthorizedSignerForAnotherAccount(msg.sender, authorized),\n \"Cannot re-authorize address or locked gold account for another account\"\n );\n\n authorizedBy[authorized] = msg.sender;\n }\n}\n",
+ "sourcePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Accounts.sol",
+ "ast": {
+ "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Accounts.sol",
+ "exportedSymbols": {
+ "Accounts": [
+ 2783
+ ]
+ },
+ "id": 2784,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 58,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".13"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:1"
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "id": 59,
+ "nodeType": "ImportDirective",
+ "scope": 2784,
+ "sourceUnit": 44541,
+ "src": "26:59:1",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "id": 60,
+ "nodeType": "ImportDirective",
+ "scope": 2784,
+ "sourceUnit": 44659,
+ "src": "86:63:1",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/interfaces/IAccounts.sol",
+ "file": "./interfaces/IAccounts.sol",
+ "id": 61,
+ "nodeType": "ImportDirective",
+ "scope": 2784,
+ "sourceUnit": 9341,
+ "src": "151:36:1",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/FixidityLib.sol",
+ "file": "../common/FixidityLib.sol",
+ "id": 62,
+ "nodeType": "ImportDirective",
+ "scope": 2784,
+ "sourceUnit": 3611,
+ "src": "189:35:1",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Initializable.sol",
+ "file": "../common/Initializable.sol",
+ "id": 63,
+ "nodeType": "ImportDirective",
+ "scope": 2784,
+ "sourceUnit": 4705,
+ "src": "225:37:1",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/interfaces/ICeloVersionedContract.sol",
+ "file": "../common/interfaces/ICeloVersionedContract.sol",
+ "id": 64,
+ "nodeType": "ImportDirective",
+ "scope": 2784,
+ "sourceUnit": 9384,
+ "src": "263:57:1",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Signatures.sol",
+ "file": "../common/Signatures.sol",
+ "id": 65,
+ "nodeType": "ImportDirective",
+ "scope": 2784,
+ "sourceUnit": 7220,
+ "src": "321:34:1",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/UsingRegistry.sol",
+ "file": "../common/UsingRegistry.sol",
+ "id": 66,
+ "nodeType": "ImportDirective",
+ "scope": 2784,
+ "sourceUnit": 8616,
+ "src": "356:37:1",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/libraries/ReentrancyGuard.sol",
+ "file": "../common/libraries/ReentrancyGuard.sol",
+ "id": 67,
+ "nodeType": "ImportDirective",
+ "scope": 2784,
+ "sourceUnit": 9762,
+ "src": "394:49:1",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "baseContracts": [
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 68,
+ "name": "IAccounts",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 9340,
+ "src": "468:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IAccounts_$9340",
+ "typeString": "contract IAccounts"
+ }
+ },
+ "id": 69,
+ "nodeType": "InheritanceSpecifier",
+ "src": "468:9:1"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 70,
+ "name": "ICeloVersionedContract",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 9383,
+ "src": "481:22:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_ICeloVersionedContract_$9383",
+ "typeString": "contract ICeloVersionedContract"
+ }
+ },
+ "id": 71,
+ "nodeType": "InheritanceSpecifier",
+ "src": "481:22:1"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 72,
+ "name": "Ownable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 44658,
+ "src": "507:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Ownable_$44658",
+ "typeString": "contract Ownable"
+ }
+ },
+ "id": 73,
+ "nodeType": "InheritanceSpecifier",
+ "src": "507:7:1"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 74,
+ "name": "ReentrancyGuard",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 9761,
+ "src": "518:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_ReentrancyGuard_$9761",
+ "typeString": "contract ReentrancyGuard"
+ }
+ },
+ "id": 75,
+ "nodeType": "InheritanceSpecifier",
+ "src": "518:15:1"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 76,
+ "name": "Initializable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 4704,
+ "src": "537:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Initializable_$4704",
+ "typeString": "contract Initializable"
+ }
+ },
+ "id": 77,
+ "nodeType": "InheritanceSpecifier",
+ "src": "537:13:1"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 78,
+ "name": "UsingRegistry",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 8615,
+ "src": "554:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_UsingRegistry_$8615",
+ "typeString": "contract UsingRegistry"
+ }
+ },
+ "id": 79,
+ "nodeType": "InheritanceSpecifier",
+ "src": "554:13:1"
+ }
+ ],
+ "contractDependencies": [
+ 4704,
+ 8615,
+ 9340,
+ 9383,
+ 9761,
+ 44203,
+ 44658
+ ],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "id": 2783,
+ "linearizedBaseContracts": [
+ 2783,
+ 8615,
+ 4704,
+ 9761,
+ 44658,
+ 44203,
+ 9383,
+ 9340
+ ],
+ "name": "Accounts",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "id": 82,
+ "libraryName": {
+ "contractScope": null,
+ "id": 80,
+ "name": "FixidityLib",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3610,
+ "src": "578:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_FixidityLib_$3610",
+ "typeString": "library FixidityLib"
+ }
+ },
+ "nodeType": "UsingForDirective",
+ "src": "572:43:1",
+ "typeName": {
+ "contractScope": null,
+ "id": 81,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "594:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ }
+ },
+ {
+ "id": 85,
+ "libraryName": {
+ "contractScope": null,
+ "id": 83,
+ "name": "SafeMath",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 44540,
+ "src": "624:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_SafeMath_$44540",
+ "typeString": "library SafeMath"
+ }
+ },
+ "nodeType": "UsingForDirective",
+ "src": "618:27:1",
+ "typeName": {
+ "id": 84,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "637:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ },
+ {
+ "canonicalName": "Accounts.Signers",
+ "id": 92,
+ "members": [
+ {
+ "constant": false,
+ "id": 87,
+ "name": "vote",
+ "nodeType": "VariableDeclaration",
+ "scope": 92,
+ "src": "871:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 86,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "871:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 89,
+ "name": "validator",
+ "nodeType": "VariableDeclaration",
+ "scope": 92,
+ "src": "1249:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 88,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1249:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 91,
+ "name": "attestation",
+ "nodeType": "VariableDeclaration",
+ "scope": 92,
+ "src": "1389:19:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 90,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1389:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "name": "Signers",
+ "nodeType": "StructDefinition",
+ "scope": 2783,
+ "src": "649:764:1",
+ "visibility": "public"
+ },
+ {
+ "canonicalName": "Accounts.SignerAuthorization",
+ "id": 97,
+ "members": [
+ {
+ "constant": false,
+ "id": 94,
+ "name": "started",
+ "nodeType": "VariableDeclaration",
+ "scope": 97,
+ "src": "1450:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 93,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "1450:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 96,
+ "name": "completed",
+ "nodeType": "VariableDeclaration",
+ "scope": 97,
+ "src": "1468:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 95,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "1468:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "name": "SignerAuthorization",
+ "nodeType": "StructDefinition",
+ "scope": 2783,
+ "src": "1417:70:1",
+ "visibility": "public"
+ },
+ {
+ "canonicalName": "Accounts.Account",
+ "id": 110,
+ "members": [
+ {
+ "constant": false,
+ "id": 99,
+ "name": "exists",
+ "nodeType": "VariableDeclaration",
+ "scope": 110,
+ "src": "1512:11:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 98,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "1512:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 101,
+ "name": "signers",
+ "nodeType": "VariableDeclaration",
+ "scope": 110,
+ "src": "1759:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage_ptr",
+ "typeString": "struct Accounts.Signers"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 100,
+ "name": "Signers",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 92,
+ "src": "1759:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage_ptr",
+ "typeString": "struct Accounts.Signers"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 103,
+ "name": "walletAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 110,
+ "src": "1970:21:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 102,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1970:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 105,
+ "name": "name",
+ "nodeType": "VariableDeclaration",
+ "scope": 110,
+ "src": "2058:11:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 104,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "2058:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 107,
+ "name": "dataEncryptionKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 110,
+ "src": "2153:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 106,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "2153:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 109,
+ "name": "metadataURL",
+ "nodeType": "VariableDeclaration",
+ "scope": 110,
+ "src": "2245:18:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 108,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "2245:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "name": "Account",
+ "nodeType": "StructDefinition",
+ "scope": 2783,
+ "src": "1491:777:1",
+ "visibility": "public"
+ },
+ {
+ "canonicalName": "Accounts.PaymentDelegation",
+ "id": 115,
+ "members": [
+ {
+ "constant": false,
+ "id": 112,
+ "name": "beneficiary",
+ "nodeType": "VariableDeclaration",
+ "scope": 115,
+ "src": "2372:19:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 111,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2372:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 114,
+ "name": "fraction",
+ "nodeType": "VariableDeclaration",
+ "scope": 115,
+ "src": "2454:29:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 113,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "2454:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "name": "PaymentDelegation",
+ "nodeType": "StructDefinition",
+ "scope": 2783,
+ "src": "2272:216:1",
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 119,
+ "name": "accounts",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "2492:45:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account)"
+ },
+ "typeName": {
+ "id": 118,
+ "keyType": {
+ "id": 116,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2500:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "2492:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account)"
+ },
+ "valueType": {
+ "contractScope": null,
+ "id": 117,
+ "name": "Account",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 110,
+ "src": "2511:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 123,
+ "name": "authorizedBy",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "2618:47:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ },
+ "typeName": {
+ "id": 122,
+ "keyType": {
+ "id": 120,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2626:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "2618:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ },
+ "valueType": {
+ "id": 121,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2637:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 129,
+ "name": "defaultSigners",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "2749:62:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => address))"
+ },
+ "typeName": {
+ "id": 128,
+ "keyType": {
+ "id": 124,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2757:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "2749:47:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => address))"
+ },
+ "valueType": {
+ "id": 127,
+ "keyType": {
+ "id": 125,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "2776:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "2768:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ },
+ "valueType": {
+ "id": 126,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2787:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 137,
+ "name": "signerAuthorizations",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "2915:100:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization)))"
+ },
+ "typeName": {
+ "id": 136,
+ "keyType": {
+ "id": 130,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2923:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "2915:79:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization)))"
+ },
+ "valueType": {
+ "id": 135,
+ "keyType": {
+ "id": 131,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "2942:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "2934:59:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization))"
+ },
+ "valueType": {
+ "id": 134,
+ "keyType": {
+ "id": 132,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2961:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "2953:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$",
+ "typeString": "mapping(address => struct Accounts.SignerAuthorization)"
+ },
+ "valueType": {
+ "contractScope": null,
+ "id": 133,
+ "name": "SignerAuthorization",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 97,
+ "src": "2972:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage_ptr",
+ "typeString": "struct Accounts.SignerAuthorization"
+ }
+ }
+ }
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": true,
+ "id": 142,
+ "name": "EIP712_AUTHORIZE_SIGNER_TYPEHASH",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "3020:140:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 138,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "3020:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "417574686f72697a655369676e65722861646472657373206163636f756e742c61646472657373207369676e65722c6279746573333220726f6c6529",
+ "id": 140,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3094:62:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_5bf3bab35849faac4d82d6621698a31fd087c25ee92f91169effbbf83ce7579b",
+ "typeString": "literal_string \"AuthorizeSigner(address account,address signer,bytes32 role)\""
+ },
+ "value": "AuthorizeSigner(address account,address signer,bytes32 role)"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_5bf3bab35849faac4d82d6621698a31fd087c25ee92f91169effbbf83ce7579b",
+ "typeString": "literal_string \"AuthorizeSigner(address account,address signer,bytes32 role)\""
+ }
+ ],
+ "id": 139,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45790,
+ "src": "3079:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 141,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3079:81:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 144,
+ "name": "eip712DomainSeparator",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "3164:36:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 143,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "3164:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 149,
+ "name": "offchainStorageRoots",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "3268:55:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes[])"
+ },
+ "typeName": {
+ "id": 148,
+ "keyType": {
+ "id": 145,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3276:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "3268:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes[])"
+ },
+ "valueType": {
+ "baseType": {
+ "id": 146,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "3287:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "id": 147,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "3287:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
+ "typeString": "bytes[]"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 153,
+ "name": "paymentDelegations",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "3396:65:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PaymentDelegation_$115_storage_$",
+ "typeString": "mapping(address => struct Accounts.PaymentDelegation)"
+ },
+ "typeName": {
+ "id": 152,
+ "keyType": {
+ "id": 150,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3404:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "3396:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PaymentDelegation_$115_storage_$",
+ "typeString": "mapping(address => struct Accounts.PaymentDelegation)"
+ },
+ "valueType": {
+ "contractScope": null,
+ "id": 151,
+ "name": "PaymentDelegation",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 115,
+ "src": "3415:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage_ptr",
+ "typeString": "struct Accounts.PaymentDelegation"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": true,
+ "id": 161,
+ "name": "ValidatorSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "3466:89:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 154,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "3466:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "63656c6f2e6f72672f636f72652f76616c696461746f72",
+ "id": 158,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3528:25:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_cfa6977d04fbed3f894cec9a54aa496d116791adfe193569ec72e733afe273c2",
+ "typeString": "literal_string \"celo.org/core/validator\""
+ },
+ "value": "celo.org/core/validator"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_cfa6977d04fbed3f894cec9a54aa496d116791adfe193569ec72e733afe273c2",
+ "typeString": "literal_string \"celo.org/core/validator\""
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 156,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45783,
+ "src": "3511:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 157,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encodePacked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3511:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 159,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3511:43:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 155,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45790,
+ "src": "3501:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 160,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3501:54:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": true,
+ "id": 169,
+ "name": "AttestationSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "3559:93:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 162,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "3559:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "63656c6f2e6f72672f636f72652f6174746573746174696f6e",
+ "id": 166,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3623:27:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_d844908d9302b59a312710d758a0705fac4f3b2753d35d743cb3490eb447ebf5",
+ "typeString": "literal_string \"celo.org/core/attestation\""
+ },
+ "value": "celo.org/core/attestation"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_d844908d9302b59a312710d758a0705fac4f3b2753d35d743cb3490eb447ebf5",
+ "typeString": "literal_string \"celo.org/core/attestation\""
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 164,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45783,
+ "src": "3606:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 165,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encodePacked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3606:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 167,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3606:45:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 163,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45790,
+ "src": "3596:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 168,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3596:56:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": true,
+ "id": 177,
+ "name": "VoteSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "3656:79:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 170,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "3656:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "63656c6f2e6f72672f636f72652f766f7465",
+ "id": 174,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3713:20:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_122641f1e4da2b60838cd4e7b658175836d790a6fa6868077a48118a5f2604cf",
+ "typeString": "literal_string \"celo.org/core/vote\""
+ },
+ "value": "celo.org/core/vote"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_122641f1e4da2b60838cd4e7b658175836d790a6fa6868077a48118a5f2604cf",
+ "typeString": "literal_string \"celo.org/core/vote\""
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 172,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45783,
+ "src": "3696:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 173,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encodePacked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3696:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 175,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3696:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 171,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45790,
+ "src": "3686:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 176,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3686:49:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 183,
+ "name": "AttestationSignerAuthorized",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 182,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 179,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 183,
+ "src": "3774:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 178,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3774:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 181,
+ "indexed": false,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 183,
+ "src": "3799:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 180,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3799:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3773:41:1"
+ },
+ "src": "3740:75:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 189,
+ "name": "VoteSignerAuthorized",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 188,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 185,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 189,
+ "src": "3845:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 184,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3845:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 187,
+ "indexed": false,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 189,
+ "src": "3870:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 186,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3870:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3844:41:1"
+ },
+ "src": "3818:68:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 195,
+ "name": "ValidatorSignerAuthorized",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 194,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 191,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 195,
+ "src": "3921:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 190,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3921:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 193,
+ "indexed": false,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 195,
+ "src": "3946:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 192,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3946:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3920:41:1"
+ },
+ "src": "3889:73:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 203,
+ "name": "SignerAuthorized",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 202,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 197,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 203,
+ "src": "3988:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 196,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3988:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 199,
+ "indexed": false,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 203,
+ "src": "4013:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 198,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4013:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 201,
+ "indexed": true,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 203,
+ "src": "4029:20:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 200,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4029:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3987:63:1"
+ },
+ "src": "3965:86:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 211,
+ "name": "SignerAuthorizationStarted",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 210,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 205,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 211,
+ "src": "4087:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 204,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4087:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 207,
+ "indexed": false,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 211,
+ "src": "4112:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 206,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4112:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 209,
+ "indexed": true,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 211,
+ "src": "4128:20:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 208,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4128:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4086:63:1"
+ },
+ "src": "4054:96:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 219,
+ "name": "SignerAuthorizationCompleted",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 218,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 213,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 219,
+ "src": "4188:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 212,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4188:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 215,
+ "indexed": false,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 219,
+ "src": "4213:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 214,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4213:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 217,
+ "indexed": true,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 219,
+ "src": "4229:20:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 216,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4229:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4187:63:1"
+ },
+ "src": "4153:98:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 225,
+ "name": "AttestationSignerRemoved",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 224,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 221,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 225,
+ "src": "4285:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 220,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4285:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 223,
+ "indexed": false,
+ "name": "oldSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 225,
+ "src": "4310:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 222,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4310:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4284:44:1"
+ },
+ "src": "4254:75:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 231,
+ "name": "VoteSignerRemoved",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 230,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 227,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 231,
+ "src": "4356:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 226,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4356:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 229,
+ "indexed": false,
+ "name": "oldSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 231,
+ "src": "4381:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 228,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4381:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4355:44:1"
+ },
+ "src": "4332:68:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 237,
+ "name": "ValidatorSignerRemoved",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 236,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 233,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 237,
+ "src": "4432:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 232,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4432:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 235,
+ "indexed": false,
+ "name": "oldSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 237,
+ "src": "4457:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 234,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4457:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4431:44:1"
+ },
+ "src": "4403:73:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 245,
+ "name": "IndexedSignerSet",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 244,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 239,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 245,
+ "src": "4502:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 238,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4502:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 241,
+ "indexed": false,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 245,
+ "src": "4527:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 240,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4527:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 243,
+ "indexed": false,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 245,
+ "src": "4543:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 242,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4543:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4501:55:1"
+ },
+ "src": "4479:78:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 253,
+ "name": "IndexedSignerRemoved",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 252,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 247,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 253,
+ "src": "4587:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 246,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4587:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 249,
+ "indexed": false,
+ "name": "oldSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 253,
+ "src": "4612:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 248,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4612:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 251,
+ "indexed": false,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 253,
+ "src": "4631:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 250,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4631:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4586:58:1"
+ },
+ "src": "4560:85:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 261,
+ "name": "DefaultSignerSet",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 260,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 255,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 261,
+ "src": "4671:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 254,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4671:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 257,
+ "indexed": false,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 261,
+ "src": "4696:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 256,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4696:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 259,
+ "indexed": false,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 261,
+ "src": "4712:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 258,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4712:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4670:55:1"
+ },
+ "src": "4648:78:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 269,
+ "name": "DefaultSignerRemoved",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 268,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 263,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 269,
+ "src": "4756:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 262,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4756:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 265,
+ "indexed": false,
+ "name": "oldSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 269,
+ "src": "4781:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 264,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4781:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 267,
+ "indexed": false,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 269,
+ "src": "4800:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 266,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4800:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4755:58:1"
+ },
+ "src": "4729:85:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 277,
+ "name": "LegacySignerSet",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 276,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 271,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 277,
+ "src": "4839:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 270,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4839:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 273,
+ "indexed": false,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 277,
+ "src": "4864:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 272,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4864:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 275,
+ "indexed": false,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 277,
+ "src": "4880:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 274,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4880:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4838:55:1"
+ },
+ "src": "4817:77:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 285,
+ "name": "LegacySignerRemoved",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 284,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 279,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 285,
+ "src": "4923:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 278,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4923:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 281,
+ "indexed": false,
+ "name": "oldSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 285,
+ "src": "4948:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 280,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4948:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 283,
+ "indexed": false,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 285,
+ "src": "4967:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 282,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4967:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4922:58:1"
+ },
+ "src": "4897:84:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 293,
+ "name": "SignerRemoved",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 292,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 287,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 293,
+ "src": "5004:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 286,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5004:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 289,
+ "indexed": false,
+ "name": "oldSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 293,
+ "src": "5029:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 288,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5029:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 291,
+ "indexed": true,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 293,
+ "src": "5048:20:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 290,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "5048:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5003:66:1"
+ },
+ "src": "4984:86:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 299,
+ "name": "AccountDataEncryptionKeySet",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 298,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 295,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 299,
+ "src": "5107:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 294,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5107:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 297,
+ "indexed": false,
+ "name": "dataEncryptionKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 299,
+ "src": "5132:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 296,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5132:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5106:50:1"
+ },
+ "src": "5073:84:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 305,
+ "name": "AccountNameSet",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 304,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 301,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 305,
+ "src": "5181:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 300,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5181:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 303,
+ "indexed": false,
+ "name": "name",
+ "nodeType": "VariableDeclaration",
+ "scope": 305,
+ "src": "5206:11:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 302,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "5206:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5180:38:1"
+ },
+ "src": "5160:59:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 311,
+ "name": "AccountMetadataURLSet",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 310,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 307,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 311,
+ "src": "5250:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 306,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5250:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 309,
+ "indexed": false,
+ "name": "metadataURL",
+ "nodeType": "VariableDeclaration",
+ "scope": 311,
+ "src": "5275:18:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 308,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "5275:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5249:45:1"
+ },
+ "src": "5222:73:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 317,
+ "name": "AccountWalletAddressSet",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 316,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 313,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 317,
+ "src": "5328:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 312,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5328:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 315,
+ "indexed": false,
+ "name": "walletAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 317,
+ "src": "5353:21:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 314,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5353:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5327:48:1"
+ },
+ "src": "5298:78:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 321,
+ "name": "AccountCreated",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 320,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 319,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 321,
+ "src": "5400:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 318,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5400:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5399:25:1"
+ },
+ "src": "5379:46:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 327,
+ "name": "OffchainStorageRootAdded",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 326,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 323,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 327,
+ "src": "5459:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 322,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5459:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 325,
+ "indexed": false,
+ "name": "url",
+ "nodeType": "VariableDeclaration",
+ "scope": 327,
+ "src": "5484:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 324,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5484:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5458:36:1"
+ },
+ "src": "5428:67:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 335,
+ "name": "OffchainStorageRootRemoved",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 334,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 329,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 335,
+ "src": "5531:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 328,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5531:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 331,
+ "indexed": false,
+ "name": "url",
+ "nodeType": "VariableDeclaration",
+ "scope": 335,
+ "src": "5556:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 330,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5556:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 333,
+ "indexed": false,
+ "name": "index",
+ "nodeType": "VariableDeclaration",
+ "scope": 335,
+ "src": "5567:13:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 332,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "5567:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5530:51:1"
+ },
+ "src": "5498:84:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 341,
+ "name": "PaymentDelegationSet",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 340,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 337,
+ "indexed": true,
+ "name": "beneficiary",
+ "nodeType": "VariableDeclaration",
+ "scope": 341,
+ "src": "5612:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 336,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5612:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 339,
+ "indexed": false,
+ "name": "fraction",
+ "nodeType": "VariableDeclaration",
+ "scope": 341,
+ "src": "5641:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 338,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "5641:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5611:47:1"
+ },
+ "src": "5585:74:1"
+ },
+ {
+ "body": {
+ "id": 349,
+ "nodeType": "Block",
+ "src": "5858:2:1",
+ "statements": []
+ },
+ "documentation": "@notice Sets initialized == true on implementation contracts\n@param test Set to true to skip implementation initialization",
+ "id": 350,
+ "implemented": true,
+ "kind": "constructor",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 346,
+ "name": "test",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 343,
+ "src": "5852:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 347,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 345,
+ "name": "Initializable",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 4704,
+ "src": "5838:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Initializable_$4704_$",
+ "typeString": "type(contract Initializable)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "5838:19:1"
+ }
+ ],
+ "name": "",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 344,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 343,
+ "name": "test",
+ "nodeType": "VariableDeclaration",
+ "scope": 350,
+ "src": "5820:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 342,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "5820:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5819:11:1"
+ },
+ "returnParameters": {
+ "id": 348,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5858:0:1"
+ },
+ "scope": 2783,
+ "src": "5808:52:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 367,
+ "nodeType": "Block",
+ "src": "6121:30:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 361,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6135:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 362,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6138:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "34",
+ "id": 363,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6141:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_4_by_1",
+ "typeString": "int_const 4"
+ },
+ "value": "4"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 364,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6144:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "id": 365,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "6134:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_rational_1_by_1_$_t_rational_1_by_1_$_t_rational_4_by_1_$_t_rational_0_by_1_$",
+ "typeString": "tuple(int_const 1,int_const 1,int_const 4,int_const 0)"
+ }
+ },
+ "functionReturnParameters": 360,
+ "id": 366,
+ "nodeType": "Return",
+ "src": "6127:19:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the storage, major, minor, and patch version of the contract.\n@return The storage, major, minor, and patch version of the contract.",
+ "id": 368,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getVersionNumber",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 351,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6059:2:1"
+ },
+ "returnParameters": {
+ "id": 360,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 353,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 368,
+ "src": "6085:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 352,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "6085:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 355,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 368,
+ "src": "6094:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 354,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "6094:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 357,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 368,
+ "src": "6103:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 356,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "6103:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 359,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 368,
+ "src": "6112:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 358,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "6112:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6084:36:1"
+ },
+ "scope": 2783,
+ "src": "6034:117:1",
+ "stateMutability": "pure",
+ "superFunction": 9382,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 387,
+ "nodeType": "Block",
+ "src": "6406:107:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 376,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "6431:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 377,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "6431:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 375,
+ "name": "_transferOwnership",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44657,
+ "src": "6412:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 378,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6412:30:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 379,
+ "nodeType": "ExpressionStatement",
+ "src": "6412:30:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 381,
+ "name": "registryAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 370,
+ "src": "6460:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 380,
+ "name": "setRegistry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8432,
+ "src": "6448:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 382,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6448:28:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 383,
+ "nodeType": "ExpressionStatement",
+ "src": "6448:28:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 384,
+ "name": "setEip712DomainSeparator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 419,
+ "src": "6482:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
+ "typeString": "function ()"
+ }
+ },
+ "id": 385,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6482:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 386,
+ "nodeType": "ExpressionStatement",
+ "src": "6482:26:1"
+ }
+ ]
+ },
+ "documentation": "@notice Used in place of the constructor to allow the contract to be upgradable via proxy.\n@param registryAddress The address of the registry core smart contract.",
+ "id": 388,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 373,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 372,
+ "name": "initializer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 4703,
+ "src": "6394:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "6394:11:1"
+ }
+ ],
+ "name": "initialize",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 371,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 370,
+ "name": "registryAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 388,
+ "src": "6360:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 369,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "6360:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6359:25:1"
+ },
+ "returnParameters": {
+ "id": 374,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6406:0:1"
+ },
+ "scope": 2783,
+ "src": "6340:173:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 418,
+ "nodeType": "Block",
+ "src": "6653:384:1",
+ "statements": [
+ {
+ "assignments": [
+ 392
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 392,
+ "name": "chainId",
+ "nodeType": "VariableDeclaration",
+ "scope": 418,
+ "src": "6659:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 391,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "6659:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 393,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "6659:15:1"
+ },
+ {
+ "externalReferences": [
+ {
+ "chainId": {
+ "declaration": 392,
+ "isOffset": false,
+ "isSlot": false,
+ "src": "6697:7:1",
+ "valueSize": 1
+ }
+ }
+ ],
+ "id": 394,
+ "nodeType": "InlineAssembly",
+ "operations": "{ chainId := chainid() }",
+ "src": "6680:41:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 416,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 395,
+ "name": "eip712DomainSeparator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 144,
+ "src": "6727:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
+ "id": 400,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6809:84:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
+ "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
+ },
+ "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
+ "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
+ }
+ ],
+ "id": 399,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45790,
+ "src": "6788:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 401,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6788:115:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "43656c6f20436f726520436f6e747261637473",
+ "id": 404,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6929:21:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_a79434944f2de3a08fff0c310d6c2df5d23248a28b9cc9797f834d872d9edf3c",
+ "typeString": "literal_string \"Celo Core Contracts\""
+ },
+ "value": "Celo Core Contracts"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_a79434944f2de3a08fff0c310d6c2df5d23248a28b9cc9797f834d872d9edf3c",
+ "typeString": "literal_string \"Celo Core Contracts\""
+ }
+ ],
+ "id": 403,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "6923:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+ "typeString": "type(bytes storage pointer)"
+ },
+ "typeName": "bytes"
+ },
+ "id": 405,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6923:28:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 402,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45790,
+ "src": "6913:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 406,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6913:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "312e30",
+ "id": 408,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6972:5:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_e6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3",
+ "typeString": "literal_string \"1.0\""
+ },
+ "value": "1.0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_e6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3",
+ "typeString": "literal_string \"1.0\""
+ }
+ ],
+ "id": 407,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45790,
+ "src": "6962:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 409,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6962:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 410,
+ "name": "chainId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 392,
+ "src": "6988:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 412,
+ "name": "this",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45860,
+ "src": "7013:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Accounts_$2783",
+ "typeString": "contract Accounts"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_contract$_Accounts_$2783",
+ "typeString": "contract Accounts"
+ }
+ ],
+ "id": 411,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "7005:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 413,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7005:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 397,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45783,
+ "src": "6768:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 398,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encode",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "6768:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 414,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6768:258:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 396,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45790,
+ "src": "6751:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 415,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6751:281:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "6727:305:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "id": 417,
+ "nodeType": "ExpressionStatement",
+ "src": "6727:305:1"
+ }
+ ]
+ },
+ "documentation": "@notice Sets the EIP712 domain separator for the Celo Accounts abstraction.",
+ "id": 419,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "setEip712DomainSeparator",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 389,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6643:2:1"
+ },
+ "returnParameters": {
+ "id": 390,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6653:0:1"
+ },
+ "scope": 2783,
+ "src": "6610:427:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 459,
+ "nodeType": "Block",
+ "src": "7830:185:1",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "id": 438,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "!",
+ "prefix": true,
+ "src": "7840:22:1",
+ "subExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 435,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "7851:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 436,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "7851:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 434,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "7841:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 437,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7841:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 443,
+ "nodeType": "IfStatement",
+ "src": "7836:58:1",
+ "trueBody": {
+ "id": 442,
+ "nodeType": "Block",
+ "src": "7864:30:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 439,
+ "name": "createAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 499,
+ "src": "7872:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_bool_$",
+ "typeString": "function () returns (bool)"
+ }
+ },
+ "id": 440,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7872:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 441,
+ "nodeType": "ExpressionStatement",
+ "src": "7872:15:1"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 445,
+ "name": "name",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 421,
+ "src": "7907:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ ],
+ "id": 444,
+ "name": "setName",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 532,
+ "src": "7899:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (string memory)"
+ }
+ },
+ "id": 446,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7899:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 447,
+ "nodeType": "ExpressionStatement",
+ "src": "7899:13:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 449,
+ "name": "dataEncryptionKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 423,
+ "src": "7946:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ ],
+ "id": 448,
+ "name": "setAccountDataEncryptionKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 636,
+ "src": "7918:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
+ "typeString": "function (bytes memory)"
+ }
+ },
+ "id": 450,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7918:46:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 451,
+ "nodeType": "ExpressionStatement",
+ "src": "7918:46:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 453,
+ "name": "walletAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 425,
+ "src": "7987:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 454,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 427,
+ "src": "8002:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 455,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 429,
+ "src": "8005:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 456,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 431,
+ "src": "8008:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 452,
+ "name": "setWalletAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 603,
+ "src": "7970:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,uint8,bytes32,bytes32)"
+ }
+ },
+ "id": 457,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7970:40:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 458,
+ "nodeType": "ExpressionStatement",
+ "src": "7970:40:1"
+ }
+ ]
+ },
+ "documentation": "@notice Convenience Setter for the dataEncryptionKey and wallet address for an account\n@param name A string to set as the name of the account\n@param dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed.\n@param walletAddress The wallet address to set for the account\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s signature on `msg.sender` (unless the wallet address\n is 0x0 or msg.sender).",
+ "id": 460,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "setAccount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 432,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 421,
+ "name": "name",
+ "nodeType": "VariableDeclaration",
+ "scope": 460,
+ "src": "7688:20:1",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 420,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "7688:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 423,
+ "name": "dataEncryptionKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 460,
+ "src": "7714:32:1",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 422,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "7714:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 425,
+ "name": "walletAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 460,
+ "src": "7752:21:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 424,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "7752:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 427,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 460,
+ "src": "7779:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 426,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "7779:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 429,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 460,
+ "src": "7792:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 428,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "7792:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 431,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 460,
+ "src": "7807:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 430,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "7807:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "7682:138:1"
+ },
+ "returnParameters": {
+ "id": 433,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "7830:0:1"
+ },
+ "scope": 2783,
+ "src": "7663:352:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9216,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 498,
+ "nodeType": "Block",
+ "src": "8160:232:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 474,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 467,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "8187:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 468,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8187:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 466,
+ "name": "isNotAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2579,
+ "src": "8174:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 469,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8174:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 471,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "8224:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 472,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8224:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 470,
+ "name": "isNotAuthorizedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2613,
+ "src": "8202:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 473,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8202:33:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "8174:61:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4163636f756e7420657869737473",
+ "id": 475,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8237:16:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_2eee228586fd7c999f38cbe4bd1109872cc8e0a2c36be861cdc648b9da9d2870",
+ "typeString": "literal_string \"Account exists\""
+ },
+ "value": "Account exists"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_2eee228586fd7c999f38cbe4bd1109872cc8e0a2c36be861cdc648b9da9d2870",
+ "typeString": "literal_string \"Account exists\""
+ }
+ ],
+ "id": 465,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "8166:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 476,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8166:88:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 477,
+ "nodeType": "ExpressionStatement",
+ "src": "8166:88:1"
+ },
+ {
+ "assignments": [
+ 479
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 479,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 498,
+ "src": "8260:23:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 478,
+ "name": "Account",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 110,
+ "src": "8260:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 484,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 480,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "8286:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 483,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 481,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "8295:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 482,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8295:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "8286:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "8260:46:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 489,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 485,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 479,
+ "src": "8312:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 487,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "exists",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 99,
+ "src": "8312:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 488,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8329:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "src": "8312:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 490,
+ "nodeType": "ExpressionStatement",
+ "src": "8312:21:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 492,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "8359:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 493,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8359:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 491,
+ "name": "AccountCreated",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 321,
+ "src": "8344:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 494,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8344:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 495,
+ "nodeType": "EmitStatement",
+ "src": "8339:31:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 496,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8383:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 464,
+ "id": 497,
+ "nodeType": "Return",
+ "src": "8376:11:1"
+ }
+ ]
+ },
+ "documentation": "@notice Creates an account.\n@return True if account creation succeeded.",
+ "id": 499,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "createAccount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 461,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "8135:2:1"
+ },
+ "returnParameters": {
+ "id": 464,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 463,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 499,
+ "src": "8154:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 462,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "8154:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "8153:6:1"
+ },
+ "scope": 2783,
+ "src": "8113:279:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9323,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 531,
+ "nodeType": "Block",
+ "src": "8534:180:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 506,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "8558:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 507,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8558:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 505,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "8548:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 508,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8548:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "556e6b6e6f776e206163636f756e74",
+ "id": 509,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8571:17:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ },
+ "value": "Unknown account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ }
+ ],
+ "id": 504,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "8540:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 510,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8540:49:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 511,
+ "nodeType": "ExpressionStatement",
+ "src": "8540:49:1"
+ },
+ {
+ "assignments": [
+ 513
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 513,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 531,
+ "src": "8595:23:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 512,
+ "name": "Account",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 110,
+ "src": "8595:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 518,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 514,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "8621:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 517,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 515,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "8630:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 516,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8630:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "8621:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "8595:46:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 523,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 519,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 513,
+ "src": "8647:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 521,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "name",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 105,
+ "src": "8647:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 522,
+ "name": "name",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 501,
+ "src": "8662:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ "src": "8647:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "id": 524,
+ "nodeType": "ExpressionStatement",
+ "src": "8647:19:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 526,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "8692:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 527,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8692:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 528,
+ "name": "name",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 501,
+ "src": "8704:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ ],
+ "id": 525,
+ "name": "AccountNameSet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 305,
+ "src": "8677:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (address,string memory)"
+ }
+ },
+ "id": 529,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8677:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 530,
+ "nodeType": "EmitStatement",
+ "src": "8672:37:1"
+ }
+ ]
+ },
+ "documentation": "@notice Setter for the name of an account.\n@param name The name to set.",
+ "id": 532,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "setName",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 502,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 501,
+ "name": "name",
+ "nodeType": "VariableDeclaration",
+ "scope": 532,
+ "src": "8507:18:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 500,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "8507:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "8506:20:1"
+ },
+ "returnParameters": {
+ "id": 503,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "8534:0:1"
+ },
+ "scope": 2783,
+ "src": "8490:224:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9190,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 602,
+ "nodeType": "Block",
+ "src": "9477:433:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 545,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "9501:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 546,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "9501:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 544,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "9491:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 547,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9491:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "556e6b6e6f776e206163636f756e74",
+ "id": 548,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "9514:17:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ },
+ "value": "Unknown account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ }
+ ],
+ "id": 543,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "9483:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 549,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9483:49:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 550,
+ "nodeType": "ExpressionStatement",
+ "src": "9483:49:1"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "id": 562,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "!",
+ "prefix": true,
+ "src": "9542:63:1",
+ "subExpression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 560,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 554,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 551,
+ "name": "walletAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 534,
+ "src": "9544:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 552,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "9561:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 553,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "9561:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "9544:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 559,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 555,
+ "name": "walletAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 534,
+ "src": "9575:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "307830",
+ "id": 557,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "9600:3:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0x0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 556,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "9592:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 558,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9592:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "9575:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "9544:60:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 561,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "9543:62:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 582,
+ "nodeType": "IfStatement",
+ "src": "9538:212:1",
+ "trueBody": {
+ "id": 581,
+ "nodeType": "Block",
+ "src": "9607:143:1",
+ "statements": [
+ {
+ "assignments": [
+ 564
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 564,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 581,
+ "src": "9615:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 563,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "9615:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 573,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 567,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "9662:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 568,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "9662:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 569,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 536,
+ "src": "9674:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 570,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 538,
+ "src": "9677:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 571,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 540,
+ "src": "9680:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 565,
+ "name": "Signatures",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7219,
+ "src": "9632:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Signatures_$7219_$",
+ "typeString": "type(library Signatures)"
+ }
+ },
+ "id": 566,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getSignerOfAddress",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 7127,
+ "src": "9632:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_delegatecall_pure$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,uint8,bytes32,bytes32) pure returns (address)"
+ }
+ },
+ "id": 572,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9632:50:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "9615:67:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 577,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 575,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 564,
+ "src": "9698:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 576,
+ "name": "walletAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 534,
+ "src": "9708:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "9698:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "496e76616c6964207369676e6174757265",
+ "id": 578,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "9723:19:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7",
+ "typeString": "literal_string \"Invalid signature\""
+ },
+ "value": "Invalid signature"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7",
+ "typeString": "literal_string \"Invalid signature\""
+ }
+ ],
+ "id": 574,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "9690:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 579,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9690:53:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 580,
+ "nodeType": "ExpressionStatement",
+ "src": "9690:53:1"
+ }
+ ]
+ }
+ },
+ {
+ "assignments": [
+ 584
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 584,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 602,
+ "src": "9755:23:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 583,
+ "name": "Account",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 110,
+ "src": "9755:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 589,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 585,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "9781:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 588,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 586,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "9790:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 587,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "9790:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "9781:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "9755:46:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 594,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 590,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 584,
+ "src": "9807:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 592,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "walletAddress",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 103,
+ "src": "9807:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 593,
+ "name": "walletAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 534,
+ "src": "9831:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "9807:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 595,
+ "nodeType": "ExpressionStatement",
+ "src": "9807:37:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 597,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "9879:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 598,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "9879:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 599,
+ "name": "walletAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 534,
+ "src": "9891:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 596,
+ "name": "AccountWalletAddressSet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 317,
+ "src": "9855:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 600,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9855:50:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 601,
+ "nodeType": "EmitStatement",
+ "src": "9850:55:1"
+ }
+ ]
+ },
+ "documentation": "@notice Setter for the wallet address for an account\n@param walletAddress The wallet address to set for the account\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev Wallet address can be zero. This means that the owner of the wallet\n does not want to be paid directly without interaction, and instead wants users to\ncontact them, using the data encryption key, and arrange a payment.\n@dev v, r, s constitute `signer`'s signature on `msg.sender` (unless the wallet address\n is 0x0 or msg.sender).",
+ "id": 603,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "setWalletAddress",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 541,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 534,
+ "name": "walletAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 603,
+ "src": "9416:21:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 533,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "9416:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 536,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 603,
+ "src": "9439:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 535,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "9439:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 538,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 603,
+ "src": "9448:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 537,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "9448:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 540,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 603,
+ "src": "9459:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 539,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "9459:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "9415:54:1"
+ },
+ "returnParameters": {
+ "id": 542,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "9477:0:1"
+ },
+ "scope": 2783,
+ "src": "9390:520:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9201,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 635,
+ "nodeType": "Block",
+ "src": "10158:258:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 612,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 609,
+ "name": "dataEncryptionKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 605,
+ "src": "10172:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ "id": 610,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10172:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "3333",
+ "id": 611,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10200:2:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_33_by_1",
+ "typeString": "int_const 33"
+ },
+ "value": "33"
+ },
+ "src": "10172:30:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "6461746120656e6372797074696f6e206b6579206c656e677468203c3d203332",
+ "id": 613,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10204:34:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_83637d6e55bb87335cf1c35dfdc7853de3d489b68e0f22b008d85b0ef47505aa",
+ "typeString": "literal_string \"data encryption key length <= 32\""
+ },
+ "value": "data encryption key length <= 32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_83637d6e55bb87335cf1c35dfdc7853de3d489b68e0f22b008d85b0ef47505aa",
+ "typeString": "literal_string \"data encryption key length <= 32\""
+ }
+ ],
+ "id": 608,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "10164:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 614,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10164:75:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 615,
+ "nodeType": "ExpressionStatement",
+ "src": "10164:75:1"
+ },
+ {
+ "assignments": [
+ 617
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 617,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 635,
+ "src": "10245:23:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 616,
+ "name": "Account",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 110,
+ "src": "10245:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 622,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 618,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "10271:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 621,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 619,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "10280:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 620,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10280:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "10271:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "10245:46:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 627,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 623,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 617,
+ "src": "10297:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 625,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "dataEncryptionKey",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 107,
+ "src": "10297:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 626,
+ "name": "dataEncryptionKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 605,
+ "src": "10325:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ "src": "10297:45:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "id": 628,
+ "nodeType": "ExpressionStatement",
+ "src": "10297:45:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 630,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "10381:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 631,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10381:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 632,
+ "name": "dataEncryptionKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 605,
+ "src": "10393:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 629,
+ "name": "AccountDataEncryptionKeySet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 299,
+ "src": "10353:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$",
+ "typeString": "function (address,bytes memory)"
+ }
+ },
+ "id": 633,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10353:58:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 634,
+ "nodeType": "EmitStatement",
+ "src": "10348:63:1"
+ }
+ ]
+ },
+ "documentation": "@notice Setter for the data encryption key and version.\n@param dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed.",
+ "id": 636,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "setAccountDataEncryptionKey",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 606,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 605,
+ "name": "dataEncryptionKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 636,
+ "src": "10119:30:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 604,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "10119:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "10118:32:1"
+ },
+ "returnParameters": {
+ "id": 607,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "10158:0:1"
+ },
+ "scope": 2783,
+ "src": "10082:334:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9180,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 668,
+ "nodeType": "Block",
+ "src": "10602:208:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 643,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "10626:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 644,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10626:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 642,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "10616:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 645,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10616:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "556e6b6e6f776e206163636f756e74",
+ "id": 646,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10639:17:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ },
+ "value": "Unknown account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ }
+ ],
+ "id": 641,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "10608:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 647,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10608:49:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 648,
+ "nodeType": "ExpressionStatement",
+ "src": "10608:49:1"
+ },
+ {
+ "assignments": [
+ 650
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 650,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 668,
+ "src": "10663:23:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 649,
+ "name": "Account",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 110,
+ "src": "10663:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 655,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 651,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "10689:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 654,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 652,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "10698:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 653,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10698:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "10689:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "10663:46:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 660,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 656,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 650,
+ "src": "10715:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 658,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "metadataURL",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 109,
+ "src": "10715:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 659,
+ "name": "metadataURL",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 638,
+ "src": "10737:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ },
+ "src": "10715:33:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "id": 661,
+ "nodeType": "ExpressionStatement",
+ "src": "10715:33:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 663,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "10781:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 664,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10781:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 665,
+ "name": "metadataURL",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 638,
+ "src": "10793:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ ],
+ "id": 662,
+ "name": "AccountMetadataURLSet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 311,
+ "src": "10759:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (address,string memory)"
+ }
+ },
+ "id": 666,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10759:46:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 667,
+ "nodeType": "EmitStatement",
+ "src": "10754:51:1"
+ }
+ ]
+ },
+ "documentation": "@notice Setter for the metadata of an account.\n@param metadataURL The URL to access the metadata.",
+ "id": 669,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "setMetadataURL",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 639,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 638,
+ "name": "metadataURL",
+ "nodeType": "VariableDeclaration",
+ "scope": 669,
+ "src": "10564:27:1",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 637,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "10564:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "10563:29:1"
+ },
+ "returnParameters": {
+ "id": 640,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "10602:0:1"
+ },
+ "scope": 2783,
+ "src": "10540:270:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9185,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 696,
+ "nodeType": "Block",
+ "src": "10985:160:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 676,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "11009:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 677,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11009:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 675,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "10999:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 678,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10999:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "556e6b6e6f776e206163636f756e74",
+ "id": 679,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11022:17:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ },
+ "value": "Unknown account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ }
+ ],
+ "id": 674,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "10991:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 680,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10991:49:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 681,
+ "nodeType": "ExpressionStatement",
+ "src": "10991:49:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 687,
+ "name": "url",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 671,
+ "src": "11084:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 682,
+ "name": "offchainStorageRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 149,
+ "src": "11046:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes storage ref[] storage ref)"
+ }
+ },
+ "id": 685,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 683,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "11067:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 684,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11067:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11046:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes storage ref[] storage ref"
+ }
+ },
+ "id": 686,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "push",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11046:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes_storage_$returns$_t_uint256_$",
+ "typeString": "function (bytes storage ref) returns (uint256)"
+ }
+ },
+ "id": 688,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11046:42:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 689,
+ "nodeType": "ExpressionStatement",
+ "src": "11046:42:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 691,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "11124:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 692,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11124:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 693,
+ "name": "url",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 671,
+ "src": "11136:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ ],
+ "id": 690,
+ "name": "OffchainStorageRootAdded",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 327,
+ "src": "11099:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$",
+ "typeString": "function (address,bytes memory)"
+ }
+ },
+ "id": 694,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11099:41:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 695,
+ "nodeType": "EmitStatement",
+ "src": "11094:46:1"
+ }
+ ]
+ },
+ "documentation": "@notice Adds a new CIP8 storage root.\n@param url The URL pointing to the offchain storage root.",
+ "id": 697,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "addStorageRoot",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 672,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 671,
+ "name": "url",
+ "nodeType": "VariableDeclaration",
+ "scope": 697,
+ "src": "10956:18:1",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 670,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "10956:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "10955:20:1"
+ },
+ "returnParameters": {
+ "id": 673,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "10985:0:1"
+ },
+ "scope": 2783,
+ "src": "10932:213:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 768,
+ "nodeType": "Block",
+ "src": "11553:484:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 704,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "11577:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 705,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11577:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 703,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "11567:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 706,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11567:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "556e6b6e6f776e206163636f756e74",
+ "id": 707,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11590:17:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ },
+ "value": "Unknown account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ }
+ ],
+ "id": 702,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "11559:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 708,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11559:49:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 709,
+ "nodeType": "ExpressionStatement",
+ "src": "11559:49:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 717,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 711,
+ "name": "index",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 699,
+ "src": "11622:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 712,
+ "name": "offchainStorageRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 149,
+ "src": "11630:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes storage ref[] storage ref)"
+ }
+ },
+ "id": 715,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 713,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "11651:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 714,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11651:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11630:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes storage ref[] storage ref"
+ }
+ },
+ "id": 716,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11630:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "11622:47:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "496e76616c69642073746f7261676520726f6f7420696e646578",
+ "id": 718,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11671:28:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_ec1403f002ece673f9ad0b5a942d24afca78694aa4da179ce70f04a3fe28293c",
+ "typeString": "literal_string \"Invalid storage root index\""
+ },
+ "value": "Invalid storage root index"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_ec1403f002ece673f9ad0b5a942d24afca78694aa4da179ce70f04a3fe28293c",
+ "typeString": "literal_string \"Invalid storage root index\""
+ }
+ ],
+ "id": 710,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "11614:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 719,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11614:86:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 720,
+ "nodeType": "ExpressionStatement",
+ "src": "11614:86:1"
+ },
+ {
+ "assignments": [
+ 722
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 722,
+ "name": "lastIndex",
+ "nodeType": "VariableDeclaration",
+ "scope": 768,
+ "src": "11706:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 721,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "11706:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 730,
+ "initialValue": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 729,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 723,
+ "name": "offchainStorageRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 149,
+ "src": "11726:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes storage ref[] storage ref)"
+ }
+ },
+ "id": 726,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 724,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "11747:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 725,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11747:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11726:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes storage ref[] storage ref"
+ }
+ },
+ "id": 727,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11726:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "-",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 728,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11768:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "src": "11726:43:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "11706:63:1"
+ },
+ {
+ "assignments": [
+ 732
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 732,
+ "name": "url",
+ "nodeType": "VariableDeclaration",
+ "scope": 768,
+ "src": "11775:16:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 731,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "11775:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 739,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 733,
+ "name": "offchainStorageRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 149,
+ "src": "11794:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes storage ref[] storage ref)"
+ }
+ },
+ "id": 736,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 734,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "11815:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 735,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11815:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11794:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes storage ref[] storage ref"
+ }
+ },
+ "id": 738,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 737,
+ "name": "index",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 699,
+ "src": "11827:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11794:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "11775:58:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 752,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 740,
+ "name": "offchainStorageRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 149,
+ "src": "11839:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes storage ref[] storage ref)"
+ }
+ },
+ "id": 744,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 741,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "11860:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 742,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11860:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11839:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes storage ref[] storage ref"
+ }
+ },
+ "id": 745,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 743,
+ "name": "index",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 699,
+ "src": "11872:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "11839:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 746,
+ "name": "offchainStorageRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 149,
+ "src": "11881:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes storage ref[] storage ref)"
+ }
+ },
+ "id": 749,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 747,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "11902:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 748,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11902:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11881:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes storage ref[] storage ref"
+ }
+ },
+ "id": 751,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 750,
+ "name": "lastIndex",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 722,
+ "src": "11914:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11881:43:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "src": "11839:85:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "id": 753,
+ "nodeType": "ExpressionStatement",
+ "src": "11839:85:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 759,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "--",
+ "prefix": false,
+ "src": "11930:41:1",
+ "subExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 754,
+ "name": "offchainStorageRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 149,
+ "src": "11930:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes storage ref[] storage ref)"
+ }
+ },
+ "id": 757,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 755,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "11951:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 756,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11951:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11930:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes storage ref[] storage ref"
+ }
+ },
+ "id": 758,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11930:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 760,
+ "nodeType": "ExpressionStatement",
+ "src": "11930:41:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 762,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "12009:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 763,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "12009:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 764,
+ "name": "url",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 732,
+ "src": "12021:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 765,
+ "name": "index",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 699,
+ "src": "12026:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 761,
+ "name": "OffchainStorageRootRemoved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 335,
+ "src": "11982:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
+ "typeString": "function (address,bytes memory,uint256)"
+ }
+ },
+ "id": 766,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11982:50:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 767,
+ "nodeType": "EmitStatement",
+ "src": "11977:55:1"
+ }
+ ]
+ },
+ "documentation": "@notice Removes a CIP8 storage root.\n@param index The index of the storage root to be removed in the account's\nlist of storage roots.\n@dev The order of storage roots may change after this operation (the last\nstorage root will be moved to `index`), be aware of this if removing\nmultiple storage roots at a time.",
+ "id": 769,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "removeStorageRoot",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 700,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 699,
+ "name": "index",
+ "nodeType": "VariableDeclaration",
+ "scope": 769,
+ "src": "11529:13:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 698,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "11529:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "11528:15:1"
+ },
+ "returnParameters": {
+ "id": 701,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "11553:0:1"
+ },
+ "scope": 2783,
+ "src": "11502:535:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 898,
+ "nodeType": "Block",
+ "src": "12352:730:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 781,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 771,
+ "src": "12376:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 780,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "12366:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 782,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12366:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "556e6b6e6f776e206163636f756e74",
+ "id": 783,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "12386:17:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ },
+ "value": "Unknown account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ }
+ ],
+ "id": 779,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "12358:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 784,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12358:46:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 785,
+ "nodeType": "ExpressionStatement",
+ "src": "12358:46:1"
+ },
+ {
+ "assignments": [
+ 787
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 787,
+ "name": "numberRoots",
+ "nodeType": "VariableDeclaration",
+ "scope": 898,
+ "src": "12410:19:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 786,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12410:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 792,
+ "initialValue": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 788,
+ "name": "offchainStorageRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 149,
+ "src": "12432:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes storage ref[] storage ref)"
+ }
+ },
+ "id": 790,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 789,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 771,
+ "src": "12453:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12432:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes storage ref[] storage ref"
+ }
+ },
+ "id": 791,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "12432:36:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "12410:58:1"
+ },
+ {
+ "assignments": [
+ 794
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 794,
+ "name": "totalLength",
+ "nodeType": "VariableDeclaration",
+ "scope": 898,
+ "src": "12474:19:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 793,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12474:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 796,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 795,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "12496:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "12474:23:1"
+ },
+ {
+ "body": {
+ "id": 819,
+ "nodeType": "Block",
+ "src": "12545:85:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 817,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 807,
+ "name": "totalLength",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 794,
+ "src": "12553:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 810,
+ "name": "offchainStorageRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 149,
+ "src": "12583:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes storage ref[] storage ref)"
+ }
+ },
+ "id": 812,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 811,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 771,
+ "src": "12604:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12583:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes storage ref[] storage ref"
+ }
+ },
+ "id": 814,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 813,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 798,
+ "src": "12613:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12583:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "id": 815,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "12583:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 808,
+ "name": "totalLength",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 794,
+ "src": "12567:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 809,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 44380,
+ "src": "12567:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 816,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12567:56:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "12553:70:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 818,
+ "nodeType": "ExpressionStatement",
+ "src": "12553:70:1"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 803,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 801,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 798,
+ "src": "12523:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 802,
+ "name": "numberRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 787,
+ "src": "12527:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "12523:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 820,
+ "initializationExpression": {
+ "assignments": [
+ 798
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 798,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 820,
+ "src": "12508:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 797,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12508:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 800,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 799,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "12520:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "12508:13:1"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 805,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "++",
+ "prefix": false,
+ "src": "12540:3:1",
+ "subExpression": {
+ "argumentTypes": null,
+ "id": 804,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 798,
+ "src": "12540:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 806,
+ "nodeType": "ExpressionStatement",
+ "src": "12540:3:1"
+ },
+ "nodeType": "ForStatement",
+ "src": "12503:127:1"
+ },
+ {
+ "assignments": [
+ 822
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 822,
+ "name": "concatenated",
+ "nodeType": "VariableDeclaration",
+ "scope": 898,
+ "src": "12636:25:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 821,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "12636:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 827,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 825,
+ "name": "totalLength",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 794,
+ "src": "12674:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 824,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "NewExpression",
+ "src": "12664:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
+ "typeString": "function (uint256) pure returns (bytes memory)"
+ },
+ "typeName": {
+ "id": 823,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "12668:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ }
+ },
+ "id": 826,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12664:22:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory",
+ "typeString": "bytes memory"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "12636:50:1"
+ },
+ {
+ "assignments": [
+ 829
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 829,
+ "name": "lastIndex",
+ "nodeType": "VariableDeclaration",
+ "scope": 898,
+ "src": "12692:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 828,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12692:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 831,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 830,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "12712:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "12692:21:1"
+ },
+ {
+ "assignments": [
+ 835
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 835,
+ "name": "lengths",
+ "nodeType": "VariableDeclaration",
+ "scope": 898,
+ "src": "12719:24:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 833,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12719:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 834,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "12719:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 841,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 839,
+ "name": "numberRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 787,
+ "src": "12760:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 838,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "NewExpression",
+ "src": "12746:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
+ "typeString": "function (uint256) pure returns (uint256[] memory)"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 836,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12750:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 837,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "12750:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ }
+ },
+ "id": 840,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12746:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "12719:53:1"
+ },
+ {
+ "body": {
+ "id": 892,
+ "nodeType": "Block",
+ "src": "12820:221:1",
+ "statements": [
+ {
+ "assignments": [
+ 853
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 853,
+ "name": "root",
+ "nodeType": "VariableDeclaration",
+ "scope": 892,
+ "src": "12828:18:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 852,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "12828:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 859,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 854,
+ "name": "offchainStorageRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 149,
+ "src": "12849:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes storage ref[] storage ref)"
+ }
+ },
+ "id": 856,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 855,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 771,
+ "src": "12870:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12849:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes storage ref[] storage ref"
+ }
+ },
+ "id": 858,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 857,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 843,
+ "src": "12879:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12849:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "12828:53:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 865,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 860,
+ "name": "lengths",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 835,
+ "src": "12889:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "id": 862,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 861,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 843,
+ "src": "12897:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "12889:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 863,
+ "name": "root",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 853,
+ "src": "12902:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes storage pointer"
+ }
+ },
+ "id": 864,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "12902:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "12889:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 866,
+ "nodeType": "ExpressionStatement",
+ "src": "12889:24:1"
+ },
+ {
+ "body": {
+ "id": 890,
+ "nodeType": "Block",
+ "src": "12962:73:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 885,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 879,
+ "name": "concatenated",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 822,
+ "src": "12972:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ "id": 881,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 880,
+ "name": "lastIndex",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 829,
+ "src": "12985:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "12972:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes1",
+ "typeString": "bytes1"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 882,
+ "name": "root",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 853,
+ "src": "12998:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes storage pointer"
+ }
+ },
+ "id": 884,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 883,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 868,
+ "src": "13003:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12998:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes1",
+ "typeString": "bytes1"
+ }
+ },
+ "src": "12972:33:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes1",
+ "typeString": "bytes1"
+ }
+ },
+ "id": 886,
+ "nodeType": "ExpressionStatement",
+ "src": "12972:33:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 888,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "++",
+ "prefix": false,
+ "src": "13015:11:1",
+ "subExpression": {
+ "argumentTypes": null,
+ "id": 887,
+ "name": "lastIndex",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 829,
+ "src": "13015:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 889,
+ "nodeType": "ExpressionStatement",
+ "src": "13015:11:1"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 875,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 871,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 868,
+ "src": "12941:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 872,
+ "name": "lengths",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 835,
+ "src": "12945:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "id": 874,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 873,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 843,
+ "src": "12953:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12945:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "12941:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 891,
+ "initializationExpression": {
+ "assignments": [
+ 868
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 868,
+ "name": "j",
+ "nodeType": "VariableDeclaration",
+ "scope": 891,
+ "src": "12926:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 867,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12926:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 870,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 869,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "12938:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "12926:13:1"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 877,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "++",
+ "prefix": false,
+ "src": "12957:3:1",
+ "subExpression": {
+ "argumentTypes": null,
+ "id": 876,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 868,
+ "src": "12957:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 878,
+ "nodeType": "ExpressionStatement",
+ "src": "12957:3:1"
+ },
+ "nodeType": "ForStatement",
+ "src": "12921:114:1"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 848,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 846,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 843,
+ "src": "12798:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 847,
+ "name": "numberRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 787,
+ "src": "12802:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "12798:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 893,
+ "initializationExpression": {
+ "assignments": [
+ 843
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 843,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 893,
+ "src": "12783:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 842,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12783:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 845,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 844,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "12795:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "12783:13:1"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 850,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "++",
+ "prefix": false,
+ "src": "12815:3:1",
+ "subExpression": {
+ "argumentTypes": null,
+ "id": 849,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 843,
+ "src": "12815:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 851,
+ "nodeType": "ExpressionStatement",
+ "src": "12815:3:1"
+ },
+ "nodeType": "ForStatement",
+ "src": "12778:263:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 894,
+ "name": "concatenated",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 822,
+ "src": "13055:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 895,
+ "name": "lengths",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 835,
+ "src": "13069:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ }
+ ],
+ "id": 896,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "13054:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
+ "typeString": "tuple(bytes memory,uint256[] memory)"
+ }
+ },
+ "functionReturnParameters": 778,
+ "id": 897,
+ "nodeType": "Return",
+ "src": "13047:30:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the full list of offchain storage roots for an account.\n@param account The account whose storage roots to return.\n@return List of storage root URLs.",
+ "id": 899,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getOffchainStorageRoots",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 772,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 771,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 899,
+ "src": "12266:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 770,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "12266:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "12265:17:1"
+ },
+ "returnParameters": {
+ "id": 778,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 774,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 899,
+ "src": "12318:12:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 773,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "12318:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 777,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 899,
+ "src": "12332:16:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 775,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12332:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 776,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "12332:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "12317:32:1"
+ },
+ "scope": 2783,
+ "src": "12233:849:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 957,
+ "nodeType": "Block",
+ "src": "13579:407:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 908,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "13603:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 909,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "13603:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 907,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "13593:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 910,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13593:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4e6f7420616e206163636f756e74",
+ "id": 911,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "13616:16:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3",
+ "typeString": "literal_string \"Not an account\""
+ },
+ "value": "Not an account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3",
+ "typeString": "literal_string \"Not an account\""
+ }
+ ],
+ "id": 906,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "13585:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 912,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13585:48:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 913,
+ "nodeType": "ExpressionStatement",
+ "src": "13585:48:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 919,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 915,
+ "name": "beneficiary",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 901,
+ "src": "13647:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 917,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "13670:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 916,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "13662:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 918,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13662:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "13647:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "42656e65666963696172792063616e6e6f74206265206164647265737320307830",
+ "id": 920,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "13674:35:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_6b9be4885aabe26164b18b8c3b7a500e9a4dfe65c37cdbd08d568c1619cf4af0",
+ "typeString": "literal_string \"Beneficiary cannot be address 0x0\""
+ },
+ "value": "Beneficiary cannot be address 0x0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_6b9be4885aabe26164b18b8c3b7a500e9a4dfe65c37cdbd08d568c1619cf4af0",
+ "typeString": "literal_string \"Beneficiary cannot be address 0x0\""
+ }
+ ],
+ "id": 914,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "13639:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 921,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13639:71:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 922,
+ "nodeType": "ExpressionStatement",
+ "src": "13639:71:1"
+ },
+ {
+ "assignments": [
+ 926
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 926,
+ "name": "f",
+ "nodeType": "VariableDeclaration",
+ "scope": 957,
+ "src": "13716:29:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 925,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "13716:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 931,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 929,
+ "name": "fraction",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 903,
+ "src": "13765:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 927,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "13748:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 928,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "wrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3044,
+ "src": "13748:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 930,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13748:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "13716:58:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "id": 935,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "13794:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 936,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "fixed1",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3032,
+ "src": "13794:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function () pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 937,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13794:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 933,
+ "name": "f",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 926,
+ "src": "13788:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "id": 934,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "lte",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3579,
+ "src": "13788:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,struct FixidityLib.Fraction memory) pure returns (bool)"
+ }
+ },
+ "id": 938,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13788:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4672616374696f6e206d757374206e6f742062652067726561746572207468616e2031",
+ "id": 939,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "13817:37:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_9daf5af7d6eb0ba53525899f14882a9d1b604650440b8edfd463c62c0e1c88fe",
+ "typeString": "literal_string \"Fraction must not be greater than 1\""
+ },
+ "value": "Fraction must not be greater than 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_9daf5af7d6eb0ba53525899f14882a9d1b604650440b8edfd463c62c0e1c88fe",
+ "typeString": "literal_string \"Fraction must not be greater than 1\""
+ }
+ ],
+ "id": 932,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "13780:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 940,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13780:75:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 941,
+ "nodeType": "ExpressionStatement",
+ "src": "13780:75:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 950,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 942,
+ "name": "paymentDelegations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 153,
+ "src": "13861:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PaymentDelegation_$115_storage_$",
+ "typeString": "mapping(address => struct Accounts.PaymentDelegation storage ref)"
+ }
+ },
+ "id": 945,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 943,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "13880:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 944,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "13880:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "13861:30:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage",
+ "typeString": "struct Accounts.PaymentDelegation storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 947,
+ "name": "beneficiary",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 901,
+ "src": "13912:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 948,
+ "name": "f",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 926,
+ "src": "13925:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ ],
+ "id": 946,
+ "name": "PaymentDelegation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 115,
+ "src": "13894:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_struct$_PaymentDelegation_$115_storage_ptr_$",
+ "typeString": "type(struct Accounts.PaymentDelegation storage pointer)"
+ }
+ },
+ "id": 949,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "structConstructorCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13894:33:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_memory",
+ "typeString": "struct Accounts.PaymentDelegation memory"
+ }
+ },
+ "src": "13861:66:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage",
+ "typeString": "struct Accounts.PaymentDelegation storage ref"
+ }
+ },
+ "id": 951,
+ "nodeType": "ExpressionStatement",
+ "src": "13861:66:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 953,
+ "name": "beneficiary",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 901,
+ "src": "13959:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 954,
+ "name": "fraction",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 903,
+ "src": "13972:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 952,
+ "name": "PaymentDelegationSet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 341,
+ "src": "13938:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,uint256)"
+ }
+ },
+ "id": 955,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13938:43:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 956,
+ "nodeType": "EmitStatement",
+ "src": "13933:48:1"
+ }
+ ]
+ },
+ "documentation": "@notice Sets validator payment delegation settings.\n@param beneficiary The address that should receive a portion of validator\npayments.\n@param fraction The fraction of the validator's payment that should be\ndiverted to `beneficiary` every epoch, given as FixidityLib value. Must not\nbe greater than 1.\n@dev Use `deletePaymentDelegation` to unset the payment delegation.",
+ "id": 958,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "setPaymentDelegation",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 904,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 901,
+ "name": "beneficiary",
+ "nodeType": "VariableDeclaration",
+ "scope": 958,
+ "src": "13533:19:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 900,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "13533:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 903,
+ "name": "fraction",
+ "nodeType": "VariableDeclaration",
+ "scope": 958,
+ "src": "13554:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 902,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "13554:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "13532:39:1"
+ },
+ "returnParameters": {
+ "id": 905,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "13579:0:1"
+ },
+ "scope": 2783,
+ "src": "13503:483:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9330,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 991,
+ "nodeType": "Block",
+ "src": "14144:198:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 963,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "14168:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 964,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "14168:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 962,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "14158:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 965,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14158:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4e6f7420616e206163636f756e74",
+ "id": 966,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "14181:16:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3",
+ "typeString": "literal_string \"Not an account\""
+ },
+ "value": "Not an account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3",
+ "typeString": "literal_string \"Not an account\""
+ }
+ ],
+ "id": 961,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "14150:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 967,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14150:48:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 968,
+ "nodeType": "ExpressionStatement",
+ "src": "14150:48:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 982,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 969,
+ "name": "paymentDelegations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 153,
+ "src": "14204:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PaymentDelegation_$115_storage_$",
+ "typeString": "mapping(address => struct Accounts.PaymentDelegation storage ref)"
+ }
+ },
+ "id": 972,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 970,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "14223:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 971,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "14223:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "14204:30:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage",
+ "typeString": "struct Accounts.PaymentDelegation storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "307830",
+ "id": 975,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "14263:3:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0x0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 974,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "14255:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 976,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14255:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 979,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "14286:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 977,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "14269:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 978,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "wrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3044,
+ "src": "14269:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 980,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14269:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ ],
+ "id": 973,
+ "name": "PaymentDelegation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 115,
+ "src": "14237:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_struct$_PaymentDelegation_$115_storage_ptr_$",
+ "typeString": "type(struct Accounts.PaymentDelegation storage pointer)"
+ }
+ },
+ "id": 981,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "structConstructorCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14237:52:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_memory",
+ "typeString": "struct Accounts.PaymentDelegation memory"
+ }
+ },
+ "src": "14204:85:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage",
+ "typeString": "struct Accounts.PaymentDelegation storage ref"
+ }
+ },
+ "id": 983,
+ "nodeType": "ExpressionStatement",
+ "src": "14204:85:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "307830",
+ "id": 986,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "14329:3:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0x0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 985,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "14321:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 987,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14321:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 988,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "14335:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 984,
+ "name": "PaymentDelegationSet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 341,
+ "src": "14300:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,uint256)"
+ }
+ },
+ "id": 989,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14300:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 990,
+ "nodeType": "EmitStatement",
+ "src": "14295:42:1"
+ }
+ ]
+ },
+ "documentation": "@notice Removes a validator's payment delegation by setting benficiary and\nfraction to 0.",
+ "id": 992,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "deletePaymentDelegation",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 959,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "14134:2:1"
+ },
+ "returnParameters": {
+ "id": 960,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "14144:0:1"
+ },
+ "scope": 2783,
+ "src": "14102:240:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1015,
+ "nodeType": "Block",
+ "src": "14617:144:1",
+ "statements": [
+ {
+ "assignments": [
+ 1002
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1002,
+ "name": "delegation",
+ "nodeType": "VariableDeclaration",
+ "scope": 1015,
+ "src": "14623:36:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage_ptr",
+ "typeString": "struct Accounts.PaymentDelegation"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 1001,
+ "name": "PaymentDelegation",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 115,
+ "src": "14623:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage_ptr",
+ "typeString": "struct Accounts.PaymentDelegation"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1006,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1003,
+ "name": "paymentDelegations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 153,
+ "src": "14662:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PaymentDelegation_$115_storage_$",
+ "typeString": "mapping(address => struct Accounts.PaymentDelegation storage ref)"
+ }
+ },
+ "id": 1005,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1004,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 994,
+ "src": "14681:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "14662:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage",
+ "typeString": "struct Accounts.PaymentDelegation storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "14623:66:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1007,
+ "name": "delegation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1002,
+ "src": "14703:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage_ptr",
+ "typeString": "struct Accounts.PaymentDelegation storage pointer"
+ }
+ },
+ "id": 1008,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "beneficiary",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 112,
+ "src": "14703:22:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1009,
+ "name": "delegation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1002,
+ "src": "14727:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage_ptr",
+ "typeString": "struct Accounts.PaymentDelegation storage pointer"
+ }
+ },
+ "id": 1010,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "fraction",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 114,
+ "src": "14727:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "id": 1011,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unwrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3055,
+ "src": "14727:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)"
+ }
+ },
+ "id": 1012,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14727:28:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 1013,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "14702:54:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
+ "typeString": "tuple(address,uint256)"
+ }
+ },
+ "functionReturnParameters": 1000,
+ "id": 1014,
+ "nodeType": "Return",
+ "src": "14695:61:1"
+ }
+ ]
+ },
+ "documentation": "@notice Gets validator payment delegation settings.\n@param account Account of the validator.\n@return Beneficiary address and fraction of payment delegated.",
+ "id": 1016,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getPaymentDelegation",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 995,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 994,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 1016,
+ "src": "14559:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 993,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "14559:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "14558:17:1"
+ },
+ "returnParameters": {
+ "id": 1000,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 997,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1016,
+ "src": "14599:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 996,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "14599:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 999,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1016,
+ "src": "14608:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 998,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "14608:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "14598:18:1"
+ },
+ "scope": 2783,
+ "src": "14529:232:1",
+ "stateMutability": "view",
+ "superFunction": 9339,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 1139,
+ "nodeType": "Block",
+ "src": "15004:929:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1025,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "15028:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1026,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "15028:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 1024,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "15018:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 1027,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15018:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4e6f7420616e206163636f756e74",
+ "id": 1028,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "15041:16:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3",
+ "typeString": "literal_string \"Not an account\""
+ },
+ "value": "Not an account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3",
+ "typeString": "literal_string \"Not an account\""
+ }
+ ],
+ "id": 1023,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "15010:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1029,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15010:48:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1030,
+ "nodeType": "ExpressionStatement",
+ "src": "15010:48:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1033,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1018,
+ "src": "15085:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1032,
+ "name": "isNotAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2579,
+ "src": "15072:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 1034,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15072:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "43616e6e6f7420617574686f72697a65206163636f756e74206173207369676e6572",
+ "id": 1035,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "15094:36:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_66a742b0342adeb78ebc6b50a299bc137177e73ef6e9121b9f0ac793215dc09b",
+ "typeString": "literal_string \"Cannot authorize account as signer\""
+ },
+ "value": "Cannot authorize account as signer"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_66a742b0342adeb78ebc6b50a299bc137177e73ef6e9121b9f0ac793215dc09b",
+ "typeString": "literal_string \"Cannot authorize account as signer\""
+ }
+ ],
+ "id": 1031,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "15064:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1036,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15064:67:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1037,
+ "nodeType": "ExpressionStatement",
+ "src": "15064:67:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1040,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "15191:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1041,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "15191:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1042,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1018,
+ "src": "15203:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1039,
+ "name": "isNotAuthorizedSignerForAnotherAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2638,
+ "src": "15152:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address,address) view returns (bool)"
+ }
+ },
+ "id": 1043,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15152:58:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4e6f742061207369676e657220666f722074686973206163636f756e74",
+ "id": 1044,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "15218:31:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_847103e511031274286610b14f624d0e55a9595e226440674c4864c332fb4fc4",
+ "typeString": "literal_string \"Not a signer for this account\""
+ },
+ "value": "Not a signer for this account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_847103e511031274286610b14f624d0e55a9595e226440674c4864c332fb4fc4",
+ "typeString": "literal_string \"Not a signer for this account\""
+ }
+ ],
+ "id": 1038,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "15137:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1045,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15137:118:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1046,
+ "nodeType": "ExpressionStatement",
+ "src": "15137:118:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1049,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "15278:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1050,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "15278:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1051,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1018,
+ "src": "15290:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1052,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1020,
+ "src": "15298:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1048,
+ "name": "isSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1694,
+ "src": "15269:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 1053,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15269:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4d75737420617574686f72697a65207369676e6572206265666f72652073657474696e672061732064656661756c74",
+ "id": 1054,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "15305:49:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_c6b5cc68d87d1115d31341909a93d841335e586024494b91b44184a18b43c9ff",
+ "typeString": "literal_string \"Must authorize signer before setting as default\""
+ },
+ "value": "Must authorize signer before setting as default"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_c6b5cc68d87d1115d31341909a93d841335e586024494b91b44184a18b43c9ff",
+ "typeString": "literal_string \"Must authorize signer before setting as default\""
+ }
+ ],
+ "id": 1047,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "15261:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1055,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15261:94:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1056,
+ "nodeType": "ExpressionStatement",
+ "src": "15261:94:1"
+ },
+ {
+ "assignments": [
+ 1058
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1058,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 1139,
+ "src": "15362:23:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 1057,
+ "name": "Account",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 110,
+ "src": "15362:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1063,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1059,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "15388:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 1062,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1060,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "15397:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1061,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "15397:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "15388:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "15362:46:1"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1065,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1020,
+ "src": "15431:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1064,
+ "name": "isLegacyRole",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2086,
+ "src": "15418:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (bytes32) pure returns (bool)"
+ }
+ },
+ "id": 1066,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15418:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "id": 1130,
+ "nodeType": "Block",
+ "src": "15764:111:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1121,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1114,
+ "name": "defaultSigners",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 129,
+ "src": "15772:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => address))"
+ }
+ },
+ "id": 1118,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1115,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "15787:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1116,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "15787:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "15772:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 1119,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1117,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1020,
+ "src": "15799:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "15772:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1120,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1018,
+ "src": "15807:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "15772:41:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1122,
+ "nodeType": "ExpressionStatement",
+ "src": "15772:41:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1124,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "15843:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1125,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "15843:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1126,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1018,
+ "src": "15855:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1127,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1020,
+ "src": "15863:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1123,
+ "name": "DefaultSignerSet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 261,
+ "src": "15826:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1128,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15826:42:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1129,
+ "nodeType": "EmitStatement",
+ "src": "15821:47:1"
+ }
+ ]
+ },
+ "id": 1131,
+ "nodeType": "IfStatement",
+ "src": "15414:461:1",
+ "trueBody": {
+ "id": 1113,
+ "nodeType": "Block",
+ "src": "15438:320:1",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 1069,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1067,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1020,
+ "src": "15450:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1068,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "15458:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "15450:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 1081,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1079,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1020,
+ "src": "15528:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1080,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "15536:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "15528:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 1093,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1091,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1020,
+ "src": "15620:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1092,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "15628:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "15620:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 1103,
+ "nodeType": "IfStatement",
+ "src": "15616:82:1",
+ "trueBody": {
+ "id": 1102,
+ "nodeType": "Block",
+ "src": "15645:53:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1100,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1094,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1058,
+ "src": "15655:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1097,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "15655:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1098,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "validator",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 89,
+ "src": "15655:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1099,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1018,
+ "src": "15683:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "15655:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1101,
+ "nodeType": "ExpressionStatement",
+ "src": "15655:34:1"
+ }
+ ]
+ }
+ },
+ "id": 1104,
+ "nodeType": "IfStatement",
+ "src": "15524:174:1",
+ "trueBody": {
+ "id": 1090,
+ "nodeType": "Block",
+ "src": "15555:55:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1088,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1082,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1058,
+ "src": "15565:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1085,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "15565:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1086,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "attestation",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 91,
+ "src": "15565:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1087,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1018,
+ "src": "15595:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "15565:36:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1089,
+ "nodeType": "ExpressionStatement",
+ "src": "15565:36:1"
+ }
+ ]
+ }
+ },
+ "id": 1105,
+ "nodeType": "IfStatement",
+ "src": "15446:252:1",
+ "trueBody": {
+ "id": 1078,
+ "nodeType": "Block",
+ "src": "15470:48:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1076,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1070,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1058,
+ "src": "15480:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1073,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "15480:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1074,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "vote",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 87,
+ "src": "15480:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1075,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1018,
+ "src": "15503:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "15480:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1077,
+ "nodeType": "ExpressionStatement",
+ "src": "15480:29:1"
+ }
+ ]
+ }
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1107,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "15726:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1108,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "15726:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1109,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1018,
+ "src": "15738:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1110,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1020,
+ "src": "15746:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1106,
+ "name": "LegacySignerSet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 277,
+ "src": "15710:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1111,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15710:41:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1112,
+ "nodeType": "EmitStatement",
+ "src": "15705:46:1"
+ }
+ ]
+ }
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1133,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "15903:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1134,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "15903:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1135,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1018,
+ "src": "15915:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1136,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1020,
+ "src": "15923:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1132,
+ "name": "IndexedSignerSet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 245,
+ "src": "15886:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1137,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15886:42:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1138,
+ "nodeType": "EmitStatement",
+ "src": "15881:47:1"
+ }
+ ]
+ },
+ "documentation": "@notice Set the indexed signer for a specific role\n@param signer the address to set as default\n@param role the role to register a default signer for",
+ "id": 1140,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "setIndexedSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1021,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1018,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1140,
+ "src": "14967:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1017,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "14967:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1020,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1140,
+ "src": "14983:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1019,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "14983:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "14966:30:1"
+ },
+ "returnParameters": {
+ "id": 1022,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "15004:0:1"
+ },
+ "scope": 2783,
+ "src": "14941:992:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1182,
+ "nodeType": "Block",
+ "src": "16548:238:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1154,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1142,
+ "src": "16579:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1155,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1144,
+ "src": "16587:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1156,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1146,
+ "src": "16593:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1157,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1148,
+ "src": "16596:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1158,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1150,
+ "src": "16599:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1153,
+ "name": "authorizeAddressWithRole",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2748,
+ "src": "16554:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32,uint8,bytes32,bytes32)"
+ }
+ },
+ "id": 1159,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16554:47:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1160,
+ "nodeType": "ExpressionStatement",
+ "src": "16554:47:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1173,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1161,
+ "name": "signerAuthorizations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 137,
+ "src": "16607:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))"
+ }
+ },
+ "id": 1166,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1162,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "16628:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1163,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "16628:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "16607:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))"
+ }
+ },
+ "id": 1167,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1164,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1144,
+ "src": "16640:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "16607:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$",
+ "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)"
+ }
+ },
+ "id": 1168,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1165,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1142,
+ "src": "16646:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "16607:46:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage",
+ "typeString": "struct Accounts.SignerAuthorization storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 1170,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "16693:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 1171,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "16716:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 1169,
+ "name": "SignerAuthorization",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 97,
+ "src": "16656:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_struct$_SignerAuthorization_$97_storage_ptr_$",
+ "typeString": "type(struct Accounts.SignerAuthorization storage pointer)"
+ }
+ },
+ "id": 1172,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "structConstructorCall",
+ "lValueRequested": false,
+ "names": [
+ "started",
+ "completed"
+ ],
+ "nodeType": "FunctionCall",
+ "src": "16656:71:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_memory",
+ "typeString": "struct Accounts.SignerAuthorization memory"
+ }
+ },
+ "src": "16607:120:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage",
+ "typeString": "struct Accounts.SignerAuthorization storage ref"
+ }
+ },
+ "id": 1174,
+ "nodeType": "ExpressionStatement",
+ "src": "16607:120:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1176,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "16756:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1177,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "16756:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1178,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1142,
+ "src": "16768:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1179,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1144,
+ "src": "16776:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1175,
+ "name": "SignerAuthorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 203,
+ "src": "16739:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1180,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16739:42:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1181,
+ "nodeType": "EmitStatement",
+ "src": "16734:47:1"
+ }
+ ]
+ },
+ "documentation": "@notice Authorizes an address to act as a signer, for `role`, on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param role The role to authorize signing for.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s EIP712 signature over `role`, `msg.sender` \n and `signer`.",
+ "id": 1183,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "authorizeSignerWithSignature",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1151,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1142,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1183,
+ "src": "16474:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1141,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "16474:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1144,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1183,
+ "src": "16490:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1143,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "16490:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1146,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 1183,
+ "src": "16504:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 1145,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "16504:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1148,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 1183,
+ "src": "16513:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1147,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "16513:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1150,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 1183,
+ "src": "16524:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1149,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "16524:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "16473:61:1"
+ },
+ "returnParameters": {
+ "id": 1152,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "16548:0:1"
+ },
+ "scope": 2783,
+ "src": "16436:350:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1224,
+ "nodeType": "Block",
+ "src": "16927:224:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1197,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1185,
+ "src": "16950:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1198,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1189,
+ "src": "16958:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1199,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1191,
+ "src": "16961:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1200,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1193,
+ "src": "16964:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1196,
+ "name": "authorizeAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2672,
+ "src": "16933:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,uint8,bytes32,bytes32)"
+ }
+ },
+ "id": 1201,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16933:33:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1202,
+ "nodeType": "ExpressionStatement",
+ "src": "16933:33:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1215,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1203,
+ "name": "signerAuthorizations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 137,
+ "src": "16972:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))"
+ }
+ },
+ "id": 1208,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1204,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "16993:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1205,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "16993:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "16972:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))"
+ }
+ },
+ "id": 1209,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1206,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1187,
+ "src": "17005:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "16972:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$",
+ "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)"
+ }
+ },
+ "id": 1210,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1207,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1185,
+ "src": "17011:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "16972:46:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage",
+ "typeString": "struct Accounts.SignerAuthorization storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 1212,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "17058:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 1213,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "17081:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 1211,
+ "name": "SignerAuthorization",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 97,
+ "src": "17021:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_struct$_SignerAuthorization_$97_storage_ptr_$",
+ "typeString": "type(struct Accounts.SignerAuthorization storage pointer)"
+ }
+ },
+ "id": 1214,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "structConstructorCall",
+ "lValueRequested": false,
+ "names": [
+ "started",
+ "completed"
+ ],
+ "nodeType": "FunctionCall",
+ "src": "17021:71:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_memory",
+ "typeString": "struct Accounts.SignerAuthorization memory"
+ }
+ },
+ "src": "16972:120:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage",
+ "typeString": "struct Accounts.SignerAuthorization storage ref"
+ }
+ },
+ "id": 1216,
+ "nodeType": "ExpressionStatement",
+ "src": "16972:120:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1218,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "17121:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1219,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "17121:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1220,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1185,
+ "src": "17133:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1221,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1187,
+ "src": "17141:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1217,
+ "name": "SignerAuthorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 203,
+ "src": "17104:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1222,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17104:42:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1223,
+ "nodeType": "EmitStatement",
+ "src": "17099:47:1"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 1225,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "legacyAuthorizeSignerWithSignature",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1194,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1185,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1225,
+ "src": "16839:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1184,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "16839:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1187,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1225,
+ "src": "16859:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1186,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "16859:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1189,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 1225,
+ "src": "16877:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 1188,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "16877:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1191,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 1225,
+ "src": "16890:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1190,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "16890:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1193,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 1225,
+ "src": "16905:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1192,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "16905:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "16833:85:1"
+ },
+ "returnParameters": {
+ "id": 1195,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "16927:0:1"
+ },
+ "scope": 2783,
+ "src": "16790:361:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "private"
+ },
+ {
+ "body": {
+ "id": 1257,
+ "nodeType": "Block",
+ "src": "17650:168:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1239,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1227,
+ "src": "17691:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1240,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "17699:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1241,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1229,
+ "src": "17711:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1242,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1231,
+ "src": "17714:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1243,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1233,
+ "src": "17717:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1238,
+ "name": "legacyAuthorizeSignerWithSignature",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1225,
+ "src": "17656:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32,uint8,bytes32,bytes32)"
+ }
+ },
+ "id": 1244,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17656:63:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1245,
+ "nodeType": "ExpressionStatement",
+ "src": "17656:63:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1247,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1227,
+ "src": "17742:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1248,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "17750:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1246,
+ "name": "setIndexedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1140,
+ "src": "17725:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32)"
+ }
+ },
+ "id": 1249,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17725:36:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1250,
+ "nodeType": "ExpressionStatement",
+ "src": "17725:36:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1252,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "17794:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1253,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "17794:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1254,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1227,
+ "src": "17806:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1251,
+ "name": "VoteSignerAuthorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 189,
+ "src": "17773:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1255,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17773:40:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1256,
+ "nodeType": "EmitStatement",
+ "src": "17768:45:1"
+ }
+ ]
+ },
+ "documentation": "@notice Authorizes an address to sign votes on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s signature on `msg.sender`.",
+ "id": 1258,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 1236,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 1235,
+ "name": "nonReentrant",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 9760,
+ "src": "17635:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "17635:12:1"
+ }
+ ],
+ "name": "authorizeVoteSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1234,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1227,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1258,
+ "src": "17571:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1226,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "17571:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1229,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 1258,
+ "src": "17587:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 1228,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "17587:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1231,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 1258,
+ "src": "17596:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1230,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "17596:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1233,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 1258,
+ "src": "17607:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1232,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "17607:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "17570:47:1"
+ },
+ "returnParameters": {
+ "id": 1237,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "17650:0:1"
+ },
+ "scope": 2783,
+ "src": "17542:276:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9266,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 1301,
+ "nodeType": "Block",
+ "src": "18335:275:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1272,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1260,
+ "src": "18376:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1273,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "18384:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1274,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1262,
+ "src": "18401:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1275,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1264,
+ "src": "18404:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1276,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1266,
+ "src": "18407:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1271,
+ "name": "legacyAuthorizeSignerWithSignature",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1225,
+ "src": "18341:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32,uint8,bytes32,bytes32)"
+ }
+ },
+ "id": 1277,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18341:68:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1278,
+ "nodeType": "ExpressionStatement",
+ "src": "18341:68:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1280,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1260,
+ "src": "18432:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1281,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "18440:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1279,
+ "name": "setIndexedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1140,
+ "src": "18415:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32)"
+ }
+ },
+ "id": 1282,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18415:41:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1283,
+ "nodeType": "ExpressionStatement",
+ "src": "18415:41:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1291,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "!",
+ "prefix": true,
+ "src": "18471:40:1",
+ "subExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1288,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "18500:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1289,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "18500:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 1285,
+ "name": "getValidators",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8614,
+ "src": "18472:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IValidators_$31061_$",
+ "typeString": "function () view returns (contract IValidators)"
+ }
+ },
+ "id": 1286,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18472:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IValidators_$31061",
+ "typeString": "contract IValidators"
+ }
+ },
+ "id": 1287,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "isValidator",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 31013,
+ "src": "18472:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view external returns (bool)"
+ }
+ },
+ "id": 1290,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18472:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "43616e6e6f7420617574686f72697a652076616c696461746f72207369676e6572",
+ "id": 1292,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "18513:35:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_7b0bdcee30bd2e63a51a6b101bc0231d1bf2b6bcc8d298dfb752f57f81df8ca2",
+ "typeString": "literal_string \"Cannot authorize validator signer\""
+ },
+ "value": "Cannot authorize validator signer"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_7b0bdcee30bd2e63a51a6b101bc0231d1bf2b6bcc8d298dfb752f57f81df8ca2",
+ "typeString": "literal_string \"Cannot authorize validator signer\""
+ }
+ ],
+ "id": 1284,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "18463:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1293,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18463:86:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1294,
+ "nodeType": "ExpressionStatement",
+ "src": "18463:86:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1296,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "18586:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1297,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "18586:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1298,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1260,
+ "src": "18598:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1295,
+ "name": "ValidatorSignerAuthorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 195,
+ "src": "18560:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1299,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18560:45:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1300,
+ "nodeType": "EmitStatement",
+ "src": "18555:50:1"
+ }
+ ]
+ },
+ "documentation": "@notice Authorizes an address to sign consensus messages on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s signature on `msg.sender`.",
+ "id": 1302,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 1269,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 1268,
+ "name": "nonReentrant",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 9760,
+ "src": "18320:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "18320:12:1"
+ }
+ ],
+ "name": "authorizeValidatorSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1267,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1260,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1302,
+ "src": "18256:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1259,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "18256:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1262,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 1302,
+ "src": "18272:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 1261,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "18272:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1264,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 1302,
+ "src": "18281:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1263,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "18281:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1266,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 1302,
+ "src": "18292:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1265,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "18292:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "18255:47:1"
+ },
+ "returnParameters": {
+ "id": 1270,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "18335:0:1"
+ },
+ "scope": 2783,
+ "src": "18222:388:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9277,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 1348,
+ "nodeType": "Block",
+ "src": "19260:325:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1318,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1304,
+ "src": "19301:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1319,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "19309:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1320,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1306,
+ "src": "19326:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1321,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1308,
+ "src": "19329:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1322,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1310,
+ "src": "19332:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1317,
+ "name": "legacyAuthorizeSignerWithSignature",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1225,
+ "src": "19266:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32,uint8,bytes32,bytes32)"
+ }
+ },
+ "id": 1323,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19266:68:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1324,
+ "nodeType": "ExpressionStatement",
+ "src": "19266:68:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1326,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1304,
+ "src": "19357:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1327,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "19365:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1325,
+ "name": "setIndexedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1140,
+ "src": "19340:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32)"
+ }
+ },
+ "id": 1328,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19340:41:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1329,
+ "nodeType": "ExpressionStatement",
+ "src": "19340:41:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1334,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "19440:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1335,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "19440:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1336,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1304,
+ "src": "19452:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1337,
+ "name": "ecdsaPublicKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1312,
+ "src": "19460:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 1331,
+ "name": "getValidators",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8614,
+ "src": "19403:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IValidators_$31061_$",
+ "typeString": "function () view returns (contract IValidators)"
+ }
+ },
+ "id": 1332,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19403:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IValidators_$31061",
+ "typeString": "contract IValidators"
+ }
+ },
+ "id": 1333,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "updateEcdsaPublicKey",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 30952,
+ "src": "19403:36:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
+ "typeString": "function (address,address,bytes memory) external returns (bool)"
+ }
+ },
+ "id": 1338,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19403:72:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4661696c656420746f20757064617465204543445341207075626c6963206b6579",
+ "id": 1339,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "19483:35:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_e0e0c82b8716ee93056d930cfa7135e714749e927e765f055904e86cef6cdc98",
+ "typeString": "literal_string \"Failed to update ECDSA public key\""
+ },
+ "value": "Failed to update ECDSA public key"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_e0e0c82b8716ee93056d930cfa7135e714749e927e765f055904e86cef6cdc98",
+ "typeString": "literal_string \"Failed to update ECDSA public key\""
+ }
+ ],
+ "id": 1330,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "19388:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1340,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19388:136:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1341,
+ "nodeType": "ExpressionStatement",
+ "src": "19388:136:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1343,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "19561:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1344,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "19561:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1345,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1304,
+ "src": "19573:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1342,
+ "name": "ValidatorSignerAuthorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 195,
+ "src": "19535:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1346,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19535:45:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1347,
+ "nodeType": "EmitStatement",
+ "src": "19530:50:1"
+ }
+ ]
+ },
+ "documentation": "@notice Authorizes an address to sign consensus messages on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@param ecdsaPublicKey The ECDSA public key corresponding to `signer`.\n@dev v, r, s constitute `signer`'s signature on `msg.sender`.",
+ "id": 1349,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 1315,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 1314,
+ "name": "nonReentrant",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 9760,
+ "src": "19247:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "19247:12:1"
+ }
+ ],
+ "name": "authorizeValidatorSignerWithPublicKey",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1313,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1304,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1349,
+ "src": "19141:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1303,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "19141:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1306,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 1349,
+ "src": "19161:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 1305,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "19161:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1308,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 1349,
+ "src": "19174:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1307,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "19174:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1310,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 1349,
+ "src": "19189:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1309,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "19189:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1312,
+ "name": "ecdsaPublicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 1349,
+ "src": "19204:29:1",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 1311,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "19204:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "19135:102:1"
+ },
+ "returnParameters": {
+ "id": 1316,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "19260:0:1"
+ },
+ "scope": 2783,
+ "src": "19089:496:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9290,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 1401,
+ "nodeType": "Block",
+ "src": "20557:341:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1369,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1351,
+ "src": "20598:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1370,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "20606:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1371,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1353,
+ "src": "20623:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1372,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1355,
+ "src": "20626:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1373,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1357,
+ "src": "20629:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1368,
+ "name": "legacyAuthorizeSignerWithSignature",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1225,
+ "src": "20563:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32,uint8,bytes32,bytes32)"
+ }
+ },
+ "id": 1374,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20563:68:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1375,
+ "nodeType": "ExpressionStatement",
+ "src": "20563:68:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1377,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1351,
+ "src": "20654:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1378,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "20662:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1376,
+ "name": "setIndexedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1140,
+ "src": "20637:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32)"
+ }
+ },
+ "id": 1379,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20637:41:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1380,
+ "nodeType": "ExpressionStatement",
+ "src": "20637:41:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1385,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "20733:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1386,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "20733:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1387,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1351,
+ "src": "20745:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1388,
+ "name": "ecdsaPublicKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1359,
+ "src": "20753:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1389,
+ "name": "blsPublicKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1361,
+ "src": "20769:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1390,
+ "name": "blsPop",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1363,
+ "src": "20783:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ },
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ },
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 1382,
+ "name": "getValidators",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8614,
+ "src": "20700:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IValidators_$31061_$",
+ "typeString": "function () view returns (contract IValidators)"
+ }
+ },
+ "id": 1383,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20700:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IValidators_$31061",
+ "typeString": "contract IValidators"
+ }
+ },
+ "id": 1384,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "updatePublicKeys",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 30967,
+ "src": "20700:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$",
+ "typeString": "function (address,address,bytes memory,bytes memory,bytes memory) external returns (bool)"
+ }
+ },
+ "id": 1391,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20700:90:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4661696c656420746f207570646174652076616c696461746f72206b657973",
+ "id": 1392,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "20798:33:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_61dffc19fe3f2ff571ba42fb286f490659e63b2603bc34f1ee899ebf6a7803eb",
+ "typeString": "literal_string \"Failed to update validator keys\""
+ },
+ "value": "Failed to update validator keys"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_61dffc19fe3f2ff571ba42fb286f490659e63b2603bc34f1ee899ebf6a7803eb",
+ "typeString": "literal_string \"Failed to update validator keys\""
+ }
+ ],
+ "id": 1381,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "20685:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1393,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20685:152:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1394,
+ "nodeType": "ExpressionStatement",
+ "src": "20685:152:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1396,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "20874:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1397,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "20874:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1398,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1351,
+ "src": "20886:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1395,
+ "name": "ValidatorSignerAuthorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 195,
+ "src": "20848:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1399,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20848:45:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1400,
+ "nodeType": "EmitStatement",
+ "src": "20843:50:1"
+ }
+ ]
+ },
+ "documentation": "@notice Authorizes an address to sign consensus messages on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param ecdsaPublicKey The ECDSA public key corresponding to `signer`.\n@param blsPublicKey The BLS public key that the validator is using for consensus, should pass\n proof of possession. 96 bytes.\n@param blsPop The BLS public key proof-of-possession, which consists of a signature on the\n account address. 48 bytes.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s signature on `msg.sender`.",
+ "id": 1402,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 1366,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 1365,
+ "name": "nonReentrant",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 9760,
+ "src": "20544:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "20544:12:1"
+ }
+ ],
+ "name": "authorizeValidatorSignerWithKeys",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1364,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1351,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1402,
+ "src": "20378:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1350,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "20378:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1353,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 1402,
+ "src": "20398:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 1352,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "20398:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1355,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 1402,
+ "src": "20411:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1354,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "20411:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1357,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 1402,
+ "src": "20426:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1356,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "20426:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1359,
+ "name": "ecdsaPublicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 1402,
+ "src": "20441:29:1",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 1358,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "20441:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1361,
+ "name": "blsPublicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 1402,
+ "src": "20476:27:1",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 1360,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "20476:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1363,
+ "name": "blsPop",
+ "nodeType": "VariableDeclaration",
+ "scope": 1402,
+ "src": "20509:21:1",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 1362,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "20509:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "20372:162:1"
+ },
+ "returnParameters": {
+ "id": 1367,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "20557:0:1"
+ },
+ "scope": 2783,
+ "src": "20331:567:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9307,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 1432,
+ "nodeType": "Block",
+ "src": "21386:189:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1414,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1404,
+ "src": "21427:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1415,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "21435:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1416,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1406,
+ "src": "21454:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1417,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1408,
+ "src": "21457:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1418,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1410,
+ "src": "21460:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1413,
+ "name": "legacyAuthorizeSignerWithSignature",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1225,
+ "src": "21392:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32,uint8,bytes32,bytes32)"
+ }
+ },
+ "id": 1419,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21392:70:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1420,
+ "nodeType": "ExpressionStatement",
+ "src": "21392:70:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1422,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1404,
+ "src": "21485:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1423,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "21493:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1421,
+ "name": "setIndexedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1140,
+ "src": "21468:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32)"
+ }
+ },
+ "id": 1424,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21468:43:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1425,
+ "nodeType": "ExpressionStatement",
+ "src": "21468:43:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1427,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "21551:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1428,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "21551:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1429,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1404,
+ "src": "21563:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1426,
+ "name": "AttestationSignerAuthorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 183,
+ "src": "21523:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1430,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21523:47:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1431,
+ "nodeType": "EmitStatement",
+ "src": "21518:52:1"
+ }
+ ]
+ },
+ "documentation": "@notice Authorizes an address to sign attestations on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s signature on `msg.sender`.",
+ "id": 1433,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "authorizeAttestationSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1411,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1404,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1433,
+ "src": "21332:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1403,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "21332:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1406,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 1433,
+ "src": "21348:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 1405,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "21348:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1408,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 1433,
+ "src": "21357:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1407,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "21357:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1410,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 1433,
+ "src": "21368:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1409,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "21368:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "21331:47:1"
+ },
+ "returnParameters": {
+ "id": 1412,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "21386:0:1"
+ },
+ "scope": 2783,
+ "src": "21296:279:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9318,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1482,
+ "nodeType": "Block",
+ "src": "21859:404:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1442,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "21883:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1443,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "21883:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 1441,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "21873:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 1444,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21873:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "556e6b6e6f776e206163636f756e74",
+ "id": 1445,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "21896:17:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ },
+ "value": "Unknown account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ }
+ ],
+ "id": 1440,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "21865:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1446,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21865:49:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1447,
+ "nodeType": "ExpressionStatement",
+ "src": "21865:49:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 1457,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1450,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1435,
+ "src": "21948:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1449,
+ "name": "isNotAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2579,
+ "src": "21935:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 1451,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21935:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1453,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "21998:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1454,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "21998:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1455,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1435,
+ "src": "22010:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1452,
+ "name": "isNotAuthorizedSignerForAnotherAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2638,
+ "src": "21959:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address,address) view returns (bool)"
+ }
+ },
+ "id": 1456,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21959:58:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "21935:82:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "43616e6e6f742072652d617574686f72697a652061646472657373207369676e6572",
+ "id": 1458,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "22025:36:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_ceb9bc54b570b4de50c8c2ee45b626d76118b30832dc4b19d8f73d3a403d5cdd",
+ "typeString": "literal_string \"Cannot re-authorize address signer\""
+ },
+ "value": "Cannot re-authorize address signer"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_ceb9bc54b570b4de50c8c2ee45b626d76118b30832dc4b19d8f73d3a403d5cdd",
+ "typeString": "literal_string \"Cannot re-authorize address signer\""
+ }
+ ],
+ "id": 1448,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "21920:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1459,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21920:147:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1460,
+ "nodeType": "ExpressionStatement",
+ "src": "21920:147:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1473,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1461,
+ "name": "signerAuthorizations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 137,
+ "src": "22074:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))"
+ }
+ },
+ "id": 1466,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1462,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "22095:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1463,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "22095:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "22074:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))"
+ }
+ },
+ "id": 1467,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1464,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1437,
+ "src": "22107:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "22074:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$",
+ "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)"
+ }
+ },
+ "id": 1468,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1465,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1435,
+ "src": "22113:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "22074:46:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage",
+ "typeString": "struct Accounts.SignerAuthorization storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 1470,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "22160:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "66616c7365",
+ "id": 1471,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "22183:5:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "false"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 1469,
+ "name": "SignerAuthorization",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 97,
+ "src": "22123:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_struct$_SignerAuthorization_$97_storage_ptr_$",
+ "typeString": "type(struct Accounts.SignerAuthorization storage pointer)"
+ }
+ },
+ "id": 1472,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "structConstructorCall",
+ "lValueRequested": false,
+ "names": [
+ "started",
+ "completed"
+ ],
+ "nodeType": "FunctionCall",
+ "src": "22123:72:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_memory",
+ "typeString": "struct Accounts.SignerAuthorization memory"
+ }
+ },
+ "src": "22074:121:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage",
+ "typeString": "struct Accounts.SignerAuthorization storage ref"
+ }
+ },
+ "id": 1474,
+ "nodeType": "ExpressionStatement",
+ "src": "22074:121:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1476,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "22233:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1477,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "22233:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1478,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1435,
+ "src": "22245:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1479,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1437,
+ "src": "22253:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1475,
+ "name": "SignerAuthorizationStarted",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 211,
+ "src": "22206:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1480,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "22206:52:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1481,
+ "nodeType": "EmitStatement",
+ "src": "22201:57:1"
+ }
+ ]
+ },
+ "documentation": "@notice Begin the process of authorizing an address to sign on behalf of the account\n@param signer The address of the signing key to authorize.\n@param role The role to authorize signing for.",
+ "id": 1483,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "authorizeSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1438,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1435,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1483,
+ "src": "21822:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1434,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "21822:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1437,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1483,
+ "src": "21838:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1436,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "21838:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "21821:30:1"
+ },
+ "returnParameters": {
+ "id": 1439,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "21859:0:1"
+ },
+ "scope": 2783,
+ "src": "21797:466:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1552,
+ "nodeType": "Block",
+ "src": "22568:524:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1492,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1485,
+ "src": "22592:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1491,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "22582:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 1493,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "22582:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "556e6b6e6f776e206163636f756e74",
+ "id": 1494,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "22602:17:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ },
+ "value": "Unknown account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ }
+ ],
+ "id": 1490,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "22574:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1495,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "22574:46:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1496,
+ "nodeType": "ExpressionStatement",
+ "src": "22574:46:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 1507,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1499,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "22654:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1500,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "22654:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 1498,
+ "name": "isNotAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2579,
+ "src": "22641:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 1501,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "22641:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1503,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1485,
+ "src": "22708:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1504,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "22717:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1505,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "22717:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 1502,
+ "name": "isNotAuthorizedSignerForAnotherAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2638,
+ "src": "22669:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address,address) view returns (bool)"
+ }
+ },
+ "id": 1506,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "22669:59:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "22641:87:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "43616e6e6f742072652d617574686f72697a652061646472657373207369676e6572",
+ "id": 1508,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "22736:36:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_ceb9bc54b570b4de50c8c2ee45b626d76118b30832dc4b19d8f73d3a403d5cdd",
+ "typeString": "literal_string \"Cannot re-authorize address signer\""
+ },
+ "value": "Cannot re-authorize address signer"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_ceb9bc54b570b4de50c8c2ee45b626d76118b30832dc4b19d8f73d3a403d5cdd",
+ "typeString": "literal_string \"Cannot re-authorize address signer\""
+ }
+ ],
+ "id": 1497,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "22626:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1509,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "22626:152:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1510,
+ "nodeType": "ExpressionStatement",
+ "src": "22626:152:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 1522,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1512,
+ "name": "signerAuthorizations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 137,
+ "src": "22799:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))"
+ }
+ },
+ "id": 1514,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1513,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1485,
+ "src": "22820:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "22799:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))"
+ }
+ },
+ "id": 1516,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1515,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1487,
+ "src": "22829:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "22799:35:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$",
+ "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)"
+ }
+ },
+ "id": 1519,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1517,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "22835:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1518,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "22835:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "22799:47:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage",
+ "typeString": "struct Accounts.SignerAuthorization storage ref"
+ }
+ },
+ "id": 1520,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "started",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 94,
+ "src": "22799:55:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 1521,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "22858:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "src": "22799:63:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "5369676e657220617574686f72697a6174696f6e206e6f742073746172746564",
+ "id": 1523,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "22870:34:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_e2c62189369d8d497a257960930acc45dec84a751a5d021a9a6f4fbf997df4f7",
+ "typeString": "literal_string \"Signer authorization not started\""
+ },
+ "value": "Signer authorization not started"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_e2c62189369d8d497a257960930acc45dec84a751a5d021a9a6f4fbf997df4f7",
+ "typeString": "literal_string \"Signer authorization not started\""
+ }
+ ],
+ "id": 1511,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "22784:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1524,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "22784:126:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1525,
+ "nodeType": "ExpressionStatement",
+ "src": "22784:126:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1531,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1526,
+ "name": "authorizedBy",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 123,
+ "src": "22917:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ }
+ },
+ "id": 1529,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1527,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "22930:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1528,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "22930:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "22917:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1530,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1485,
+ "src": "22944:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "22917:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1532,
+ "nodeType": "ExpressionStatement",
+ "src": "22917:34:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1543,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1533,
+ "name": "signerAuthorizations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 137,
+ "src": "22957:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))"
+ }
+ },
+ "id": 1538,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1534,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1485,
+ "src": "22978:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "22957:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))"
+ }
+ },
+ "id": 1539,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1535,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1487,
+ "src": "22987:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "22957:35:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$",
+ "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)"
+ }
+ },
+ "id": 1540,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1536,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "22993:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1537,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "22993:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "22957:47:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage",
+ "typeString": "struct Accounts.SignerAuthorization storage ref"
+ }
+ },
+ "id": 1541,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "completed",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 96,
+ "src": "22957:57:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 1542,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "23017:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "src": "22957:64:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 1544,
+ "nodeType": "ExpressionStatement",
+ "src": "22957:64:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1546,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1485,
+ "src": "23061:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1547,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "23070:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1548,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "23070:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1549,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1487,
+ "src": "23082:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1545,
+ "name": "SignerAuthorizationCompleted",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 219,
+ "src": "23032:28:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1550,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "23032:55:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1551,
+ "nodeType": "EmitStatement",
+ "src": "23027:60:1"
+ }
+ ]
+ },
+ "documentation": "@notice Finish the process of authorizing an address to sign on behalf of the account. \n@param account The address of account that authorized signing.\n@param role The role to finish authorizing for.",
+ "id": 1553,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "completeSignerAuthorization",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1488,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1485,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 1553,
+ "src": "22530:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1484,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "22530:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1487,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1553,
+ "src": "22547:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1486,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "22547:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "22529:31:1"
+ },
+ "returnParameters": {
+ "id": 1489,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "22568:0:1"
+ },
+ "scope": 2783,
+ "src": "22493:599:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1612,
+ "nodeType": "Block",
+ "src": "23477:381:1",
+ "statements": [
+ {
+ "assignments": [
+ 1565
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1565,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 1612,
+ "src": "23483:23:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 1564,
+ "name": "Account",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 110,
+ "src": "23483:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1569,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1566,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "23509:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 1568,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1567,
+ "name": "_account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1555,
+ "src": "23518:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "23509:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "23483:44:1"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 1578,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 1572,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1570,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1559,
+ "src": "23537:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1571,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "23545:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "23537:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 1577,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1573,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1565,
+ "src": "23564:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1574,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "23564:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1575,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "validator",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 89,
+ "src": "23564:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1576,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1557,
+ "src": "23593:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "23564:35:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "23537:62:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 1590,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 1584,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1582,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1559,
+ "src": "23637:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1583,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "23645:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "23637:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 1589,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1585,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1565,
+ "src": "23666:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1586,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "23666:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1587,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "attestation",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 91,
+ "src": "23666:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1588,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1557,
+ "src": "23697:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "23666:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "23637:66:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 1602,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 1596,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1594,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1559,
+ "src": "23741:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1595,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "23749:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "23741:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 1601,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1597,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1565,
+ "src": "23763:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1598,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "23763:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1599,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "vote",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 87,
+ "src": "23763:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1600,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1557,
+ "src": "23787:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "23763:30:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "23741:52:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "id": 1608,
+ "nodeType": "Block",
+ "src": "23827:27:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "66616c7365",
+ "id": 1606,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "23842:5:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "false"
+ },
+ "functionReturnParameters": 1563,
+ "id": 1607,
+ "nodeType": "Return",
+ "src": "23835:12:1"
+ }
+ ]
+ },
+ "id": 1609,
+ "nodeType": "IfStatement",
+ "src": "23737:117:1",
+ "trueBody": {
+ "id": 1605,
+ "nodeType": "Block",
+ "src": "23795:26:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 1603,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "23810:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 1563,
+ "id": 1604,
+ "nodeType": "Return",
+ "src": "23803:11:1"
+ }
+ ]
+ }
+ },
+ "id": 1610,
+ "nodeType": "IfStatement",
+ "src": "23633:221:1",
+ "trueBody": {
+ "id": 1593,
+ "nodeType": "Block",
+ "src": "23705:26:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 1591,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "23720:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 1563,
+ "id": 1592,
+ "nodeType": "Return",
+ "src": "23713:11:1"
+ }
+ ]
+ }
+ },
+ "id": 1611,
+ "nodeType": "IfStatement",
+ "src": "23533:321:1",
+ "trueBody": {
+ "id": 1581,
+ "nodeType": "Block",
+ "src": "23601:26:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 1579,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "23616:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 1563,
+ "id": 1580,
+ "nodeType": "Return",
+ "src": "23609:11:1"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "documentation": "@notice Whether or not the signer has been registered as the legacy signer for role\n@param _account The address of account that authorized signing.\n@param signer The address of the signer.\n@param role The role that has been authorized.",
+ "id": 1613,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isLegacySigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1560,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1555,
+ "name": "_account",
+ "nodeType": "VariableDeclaration",
+ "scope": 1613,
+ "src": "23388:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1554,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "23388:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1557,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1613,
+ "src": "23406:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1556,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "23406:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1559,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1613,
+ "src": "23422:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1558,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "23422:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "23387:48:1"
+ },
+ "returnParameters": {
+ "id": 1563,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1562,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1613,
+ "src": "23469:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 1561,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "23469:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "23468:6:1"
+ },
+ "scope": 2783,
+ "src": "23364:494:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1632,
+ "nodeType": "Block",
+ "src": "24243:57:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 1630,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1624,
+ "name": "defaultSigners",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 129,
+ "src": "24256:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => address))"
+ }
+ },
+ "id": 1626,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1625,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1615,
+ "src": "24271:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "24256:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 1628,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1627,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1619,
+ "src": "24280:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "24256:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1629,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1617,
+ "src": "24289:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "24256:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 1623,
+ "id": 1631,
+ "nodeType": "Return",
+ "src": "24249:46:1"
+ }
+ ]
+ },
+ "documentation": "@notice Whether or not the signer has been registered as the default signer for role\n@param account The address of account that authorized signing.\n@param signer The address of the signer.\n@param role The role that has been authorized.",
+ "id": 1633,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isDefaultSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1620,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1615,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 1633,
+ "src": "24155:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1614,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "24155:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1617,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1633,
+ "src": "24172:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1616,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "24172:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1619,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1633,
+ "src": "24188:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1618,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "24188:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "24154:47:1"
+ },
+ "returnParameters": {
+ "id": 1623,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1622,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1633,
+ "src": "24235:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 1621,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "24235:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "24234:6:1"
+ },
+ "scope": 2783,
+ "src": "24130:170:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1659,
+ "nodeType": "Block",
+ "src": "24684:139:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "condition": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1645,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1639,
+ "src": "24716:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1644,
+ "name": "isLegacyRole",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2086,
+ "src": "24703:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (bytes32) pure returns (bool)"
+ }
+ },
+ "id": 1646,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "24703:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1653,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1635,
+ "src": "24796:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1654,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1637,
+ "src": "24805:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1655,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1639,
+ "src": "24813:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1652,
+ "name": "isDefaultSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1633,
+ "src": "24780:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 1656,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "24780:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 1657,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "Conditional",
+ "src": "24703:115:1",
+ "trueExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1648,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1635,
+ "src": "24747:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1649,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1637,
+ "src": "24756:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1650,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1639,
+ "src": "24764:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1647,
+ "name": "isLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1613,
+ "src": "24732:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 1651,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "24732:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 1643,
+ "id": 1658,
+ "nodeType": "Return",
+ "src": "24690:128:1"
+ }
+ ]
+ },
+ "documentation": "@notice Whether or not the signer has been registered as an indexed signer for role\n@param account The address of account that authorized signing.\n@param signer The address of the signer.\n@param role The role that has been authorized.",
+ "id": 1660,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isIndexedSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1640,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1635,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 1660,
+ "src": "24596:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1634,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "24596:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1637,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1660,
+ "src": "24613:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1636,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "24613:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1639,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1660,
+ "src": "24629:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1638,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "24629:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "24595:47:1"
+ },
+ "returnParameters": {
+ "id": 1643,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1642,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1660,
+ "src": "24676:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 1641,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "24676:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "24675:6:1"
+ },
+ "scope": 2783,
+ "src": "24571:252:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1693,
+ "nodeType": "Block",
+ "src": "25177:161:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 1691,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1672,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1662,
+ "src": "25211:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1673,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1664,
+ "src": "25220:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1674,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1666,
+ "src": "25228:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1671,
+ "name": "isLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1613,
+ "src": "25196:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 1675,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "25196:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 1689,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1676,
+ "name": "signerAuthorizations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 137,
+ "src": "25244:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))"
+ }
+ },
+ "id": 1678,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1677,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1662,
+ "src": "25265:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "25244:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))"
+ }
+ },
+ "id": 1680,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1679,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1666,
+ "src": "25274:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "25244:35:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$",
+ "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)"
+ }
+ },
+ "id": 1682,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1681,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1664,
+ "src": "25280:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "25244:43:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage",
+ "typeString": "struct Accounts.SignerAuthorization storage ref"
+ }
+ },
+ "id": 1683,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "completed",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 96,
+ "src": "25244:53:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 1688,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1684,
+ "name": "authorizedBy",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 123,
+ "src": "25301:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ }
+ },
+ "id": 1686,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1685,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1664,
+ "src": "25314:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "25301:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1687,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1662,
+ "src": "25325:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "25301:31:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "25244:88:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 1690,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "25243:90:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "25196:137:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 1670,
+ "id": 1692,
+ "nodeType": "Return",
+ "src": "25183:150:1"
+ }
+ ]
+ },
+ "documentation": "@notice Whether or not the signer has been registered as a signer for role\n@param account The address of account that authorized signing.\n@param signer The address of the signer.\n@param role The role that has been authorized.",
+ "id": 1694,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1667,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1662,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 1694,
+ "src": "25103:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1661,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "25103:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1664,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1694,
+ "src": "25120:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1663,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "25120:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1666,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1694,
+ "src": "25136:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1665,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "25136:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "25102:47:1"
+ },
+ "returnParameters": {
+ "id": 1670,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1669,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1694,
+ "src": "25171:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 1668,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "25171:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "25170:6:1"
+ },
+ "scope": 2783,
+ "src": "25085:253:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1726,
+ "nodeType": "Block",
+ "src": "25508:168:1",
+ "statements": [
+ {
+ "assignments": [
+ 1700
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1700,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1726,
+ "src": "25514:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1699,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "25514:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1707,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1701,
+ "name": "defaultSigners",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 129,
+ "src": "25531:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => address))"
+ }
+ },
+ "id": 1704,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1702,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "25546:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1703,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "25546:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "25531:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 1706,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1705,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1696,
+ "src": "25558:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "25531:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "25514:49:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1717,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1708,
+ "name": "defaultSigners",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 129,
+ "src": "25569:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => address))"
+ }
+ },
+ "id": 1712,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1709,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "25584:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1710,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "25584:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "25569:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 1713,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1711,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1696,
+ "src": "25596:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "25569:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1715,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "25612:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 1714,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "25604:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1716,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "25604:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "25569:45:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1718,
+ "nodeType": "ExpressionStatement",
+ "src": "25569:45:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1720,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "25646:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1721,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "25646:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1722,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1700,
+ "src": "25658:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1723,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1696,
+ "src": "25666:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1719,
+ "name": "DefaultSignerRemoved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 269,
+ "src": "25625:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1724,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "25625:46:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1725,
+ "nodeType": "EmitStatement",
+ "src": "25620:51:1"
+ }
+ ]
+ },
+ "documentation": "@notice Removes the signer for a default role.\n@param role The role that has been authorized.",
+ "id": 1727,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "removeDefaultSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1697,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1696,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1727,
+ "src": "25487:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1695,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "25487:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "25486:14:1"
+ },
+ "returnParameters": {
+ "id": 1698,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "25508:0:1"
+ },
+ "scope": 2783,
+ "src": "25458:218:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1812,
+ "nodeType": "Block",
+ "src": "25967:514:1",
+ "statements": [
+ {
+ "assignments": [
+ 1733
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1733,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 1812,
+ "src": "25973:23:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 1732,
+ "name": "Account",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 110,
+ "src": "25973:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1738,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1734,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "25999:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 1737,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1735,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "26008:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1736,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "26008:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "25999:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "25973:46:1"
+ },
+ {
+ "assignments": [
+ 1740
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1740,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1812,
+ "src": "26026:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1739,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "26026:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1741,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "26026:14:1"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 1744,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1742,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1729,
+ "src": "26050:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1743,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "26058:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "26050:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 1764,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1762,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1729,
+ "src": "26180:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1763,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "26188:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "26180:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 1784,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1782,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1729,
+ "src": "26316:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1783,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "26324:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "26316:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 1802,
+ "nodeType": "IfStatement",
+ "src": "26312:109:1",
+ "trueBody": {
+ "id": 1801,
+ "nodeType": "Block",
+ "src": "26336:85:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1789,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1785,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1740,
+ "src": "26344:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1786,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1733,
+ "src": "26353:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1787,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "26353:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1788,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "vote",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 87,
+ "src": "26353:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "26344:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1790,
+ "nodeType": "ExpressionStatement",
+ "src": "26344:29:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1799,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1791,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1733,
+ "src": "26381:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1794,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "26381:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1795,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "vote",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 87,
+ "src": "26381:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1797,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "26412:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 1796,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "26404:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1798,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "26404:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "26381:33:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1800,
+ "nodeType": "ExpressionStatement",
+ "src": "26381:33:1"
+ }
+ ]
+ }
+ },
+ "id": 1803,
+ "nodeType": "IfStatement",
+ "src": "26176:245:1",
+ "trueBody": {
+ "id": 1781,
+ "nodeType": "Block",
+ "src": "26207:99:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1769,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1765,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1740,
+ "src": "26215:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1766,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1733,
+ "src": "26224:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1767,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "26224:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1768,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "attestation",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 91,
+ "src": "26224:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "26215:36:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1770,
+ "nodeType": "ExpressionStatement",
+ "src": "26215:36:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1779,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1771,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1733,
+ "src": "26259:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1774,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "26259:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1775,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "attestation",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 91,
+ "src": "26259:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1777,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "26297:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 1776,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "26289:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1778,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "26289:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "26259:40:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1780,
+ "nodeType": "ExpressionStatement",
+ "src": "26259:40:1"
+ }
+ ]
+ }
+ },
+ "id": 1804,
+ "nodeType": "IfStatement",
+ "src": "26046:375:1",
+ "trueBody": {
+ "id": 1761,
+ "nodeType": "Block",
+ "src": "26075:95:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1749,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1745,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1740,
+ "src": "26083:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1746,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1733,
+ "src": "26092:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1747,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "26092:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1748,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "validator",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 89,
+ "src": "26092:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "26083:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1750,
+ "nodeType": "ExpressionStatement",
+ "src": "26083:34:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1759,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1751,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1733,
+ "src": "26125:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1754,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "26125:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1755,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "validator",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 89,
+ "src": "26125:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1757,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "26161:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 1756,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "26153:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1758,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "26153:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "26125:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1760,
+ "nodeType": "ExpressionStatement",
+ "src": "26125:38:1"
+ }
+ ]
+ }
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1806,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "26451:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1807,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "26451:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1808,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1740,
+ "src": "26463:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1809,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1729,
+ "src": "26471:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1805,
+ "name": "LegacySignerRemoved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 285,
+ "src": "26431:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1810,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "26431:45:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1811,
+ "nodeType": "EmitStatement",
+ "src": "26426:50:1"
+ }
+ ]
+ },
+ "documentation": "@notice Remove one of the Validator, Attestation or \nVote signers from an account. Should only be called from\nmethods that check the role is a legacy signer.\n@param role The role that has been authorized.",
+ "id": 1813,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "removeLegacySigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1730,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1729,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1813,
+ "src": "25945:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1728,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "25945:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "25944:14:1"
+ },
+ "returnParameters": {
+ "id": 1731,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "25967:0:1"
+ },
+ "scope": 2783,
+ "src": "25917:564:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "private"
+ },
+ {
+ "body": {
+ "id": 1844,
+ "nodeType": "Block",
+ "src": "26679:205:1",
+ "statements": [
+ {
+ "assignments": [
+ 1819
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1819,
+ "name": "oldSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 1844,
+ "src": "26685:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1818,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "26685:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1825,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1821,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "26722:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1822,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "26722:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1823,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1815,
+ "src": "26734:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1820,
+ "name": "getIndexedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2204,
+ "src": "26705:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 1824,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "26705:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "26685:54:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "condition": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1827,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1815,
+ "src": "26758:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1826,
+ "name": "isLegacyRole",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2086,
+ "src": "26745:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (bytes32) pure returns (bool)"
+ }
+ },
+ "id": 1828,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "26745:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1833,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1815,
+ "src": "26813:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1832,
+ "name": "removeDefaultSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1727,
+ "src": "26793:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
+ "typeString": "function (bytes32)"
+ }
+ },
+ "id": 1834,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "26793:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1835,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "Conditional",
+ "src": "26745:73:1",
+ "trueExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1830,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1815,
+ "src": "26785:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1829,
+ "name": "removeLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1813,
+ "src": "26766:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
+ "typeString": "function (bytes32)"
+ }
+ },
+ "id": 1831,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "26766:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1836,
+ "nodeType": "ExpressionStatement",
+ "src": "26745:73:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1838,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "26851:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1839,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "26851:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1840,
+ "name": "oldSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1819,
+ "src": "26863:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1841,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1815,
+ "src": "26874:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1837,
+ "name": "IndexedSignerRemoved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 253,
+ "src": "26830:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1842,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "26830:49:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1843,
+ "nodeType": "EmitStatement",
+ "src": "26825:54:1"
+ }
+ ]
+ },
+ "documentation": "@notice Removes the currently authorized and indexed signer \nfor a specific role\n@param role The role of the signer.",
+ "id": 1845,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "removeIndexedSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1816,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1815,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1845,
+ "src": "26658:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1814,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "26658:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "26657:14:1"
+ },
+ "returnParameters": {
+ "id": 1817,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "26679:0:1"
+ },
+ "scope": 2783,
+ "src": "26629:255:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1881,
+ "nodeType": "Block",
+ "src": "27187:207:1",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1853,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "27213:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1854,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "27213:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1855,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1847,
+ "src": "27225:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1856,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1849,
+ "src": "27233:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1852,
+ "name": "isIndexedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1660,
+ "src": "27197:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 1857,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "27197:41:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 1863,
+ "nodeType": "IfStatement",
+ "src": "27193:87:1",
+ "trueBody": {
+ "id": 1862,
+ "nodeType": "Block",
+ "src": "27240:40:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1859,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1849,
+ "src": "27268:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1858,
+ "name": "removeIndexedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1845,
+ "src": "27248:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
+ "typeString": "function (bytes32)"
+ }
+ },
+ "id": 1860,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "27248:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1861,
+ "nodeType": "ExpressionStatement",
+ "src": "27248:25:1"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1872,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "delete",
+ "prefix": true,
+ "src": "27286:53:1",
+ "subExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1864,
+ "name": "signerAuthorizations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 137,
+ "src": "27293:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))"
+ }
+ },
+ "id": 1867,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1865,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "27314:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1866,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "27314:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "27293:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))"
+ }
+ },
+ "id": 1869,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1868,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1849,
+ "src": "27326:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "27293:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$",
+ "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)"
+ }
+ },
+ "id": 1871,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1870,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1847,
+ "src": "27332:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "27293:46:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage",
+ "typeString": "struct Accounts.SignerAuthorization storage ref"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1873,
+ "nodeType": "ExpressionStatement",
+ "src": "27286:53:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1875,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "27364:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1876,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "27364:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1877,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1847,
+ "src": "27376:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1878,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1849,
+ "src": "27384:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1874,
+ "name": "SignerRemoved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 293,
+ "src": "27350:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1879,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "27350:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1880,
+ "nodeType": "EmitStatement",
+ "src": "27345:44:1"
+ }
+ ]
+ },
+ "documentation": "@notice Removes the currently authorized signer for a specific role and \nif the signer is indexed, remove that as well.\n@param signer The address of the signer.\n@param role The role that has been authorized.",
+ "id": 1882,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "removeSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1850,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1847,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1882,
+ "src": "27150:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1846,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "27150:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1849,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1882,
+ "src": "27166:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1848,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "27166:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "27149:30:1"
+ },
+ "returnParameters": {
+ "id": 1851,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "27187:0:1"
+ },
+ "scope": 2783,
+ "src": "27128:266:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1904,
+ "nodeType": "Block",
+ "src": "27600:153:1",
+ "statements": [
+ {
+ "assignments": [
+ 1886
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1886,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1904,
+ "src": "27606:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1885,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "27606:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1892,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1888,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "27639:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1889,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "27639:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1890,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "27651:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1887,
+ "name": "getLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2154,
+ "src": "27623:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 1891,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "27623:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "27606:56:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1894,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1886,
+ "src": "27681:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1895,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "27689:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1893,
+ "name": "removeSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1882,
+ "src": "27668:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32)"
+ }
+ },
+ "id": 1896,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "27668:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1897,
+ "nodeType": "ExpressionStatement",
+ "src": "27668:32:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1899,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "27729:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1900,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "27729:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1901,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1886,
+ "src": "27741:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1898,
+ "name": "VoteSignerRemoved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 231,
+ "src": "27711:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1902,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "27711:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1903,
+ "nodeType": "EmitStatement",
+ "src": "27706:42:1"
+ }
+ ]
+ },
+ "documentation": "@notice Removes the currently authorized vote signer for the account.\nNote that the signers cannot be reauthorized after they have been removed.",
+ "id": 1905,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "removeVoteSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1883,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "27590:2:1"
+ },
+ "returnParameters": {
+ "id": 1884,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "27600:0:1"
+ },
+ "scope": 2783,
+ "src": "27565:188:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1927,
+ "nodeType": "Block",
+ "src": "27968:168:1",
+ "statements": [
+ {
+ "assignments": [
+ 1909
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1909,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1927,
+ "src": "27974:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1908,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "27974:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1915,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1911,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "28007:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1912,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "28007:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1913,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "28019:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1910,
+ "name": "getLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2154,
+ "src": "27991:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 1914,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "27991:44:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "27974:61:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1917,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1909,
+ "src": "28054:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1918,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "28062:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1916,
+ "name": "removeSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1882,
+ "src": "28041:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32)"
+ }
+ },
+ "id": 1919,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "28041:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1920,
+ "nodeType": "ExpressionStatement",
+ "src": "28041:37:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1922,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "28112:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1923,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "28112:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1924,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1909,
+ "src": "28124:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1921,
+ "name": "ValidatorSignerRemoved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 237,
+ "src": "28089:22:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1925,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "28089:42:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1926,
+ "nodeType": "EmitStatement",
+ "src": "28084:47:1"
+ }
+ ]
+ },
+ "documentation": "@notice Removes the currently authorized validator signer for the account\nNote that the signers cannot be reauthorized after they have been removed.",
+ "id": 1928,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "removeValidatorSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1906,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "27958:2:1"
+ },
+ "returnParameters": {
+ "id": 1907,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "27968:0:1"
+ },
+ "scope": 2783,
+ "src": "27928:208:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1950,
+ "nodeType": "Block",
+ "src": "28355:174:1",
+ "statements": [
+ {
+ "assignments": [
+ 1932
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1932,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1950,
+ "src": "28361:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1931,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "28361:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1938,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1934,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "28394:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1935,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "28394:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1936,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "28406:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1933,
+ "name": "getLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2154,
+ "src": "28378:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 1937,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "28378:46:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "28361:63:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1940,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1932,
+ "src": "28443:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1941,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "28451:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1939,
+ "name": "removeSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1882,
+ "src": "28430:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32)"
+ }
+ },
+ "id": 1942,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "28430:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1943,
+ "nodeType": "ExpressionStatement",
+ "src": "28430:39:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1945,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "28505:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1946,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "28505:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1947,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1932,
+ "src": "28517:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1944,
+ "name": "AttestationSignerRemoved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 225,
+ "src": "28480:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1948,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "28480:44:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1949,
+ "nodeType": "EmitStatement",
+ "src": "28475:49:1"
+ }
+ ]
+ },
+ "documentation": "@notice Removes the currently authorized attestation signer for the account\nNote that the signers cannot be reauthorized after they have been removed.",
+ "id": 1951,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "removeAttestationSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1929,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "28345:2:1"
+ },
+ "returnParameters": {
+ "id": 1930,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "28355:0:1"
+ },
+ "scope": 2783,
+ "src": "28313:216:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1993,
+ "nodeType": "Block",
+ "src": "28628:269:1",
+ "statements": [
+ {
+ "assignments": [
+ 1961
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1961,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 1993,
+ "src": "28634:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1960,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "28634:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1965,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1962,
+ "name": "authorizedBy",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 123,
+ "src": "28652:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ }
+ },
+ "id": 1964,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1963,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1953,
+ "src": "28665:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "28652:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "28634:38:1"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 1970,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1966,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1961,
+ "src": "28682:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1968,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "28701:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 1967,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "28693:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1969,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "28693:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "28682:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 1983,
+ "nodeType": "IfStatement",
+ "src": "28678:145:1",
+ "trueBody": {
+ "id": 1982,
+ "nodeType": "Block",
+ "src": "28705:118:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1973,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1961,
+ "src": "28730:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1974,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1953,
+ "src": "28739:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1975,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1955,
+ "src": "28747:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1972,
+ "name": "isSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1694,
+ "src": "28721:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 1976,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "28721:31:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "6e6f742061637469766520617574686f72697a6564207369676e657220666f7220726f6c65",
+ "id": 1977,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "28754:39:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_d83c0b17424b2b763298cadca0296afade349b0e1c9fb38375ada393eb382682",
+ "typeString": "literal_string \"not active authorized signer for role\""
+ },
+ "value": "not active authorized signer for role"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_d83c0b17424b2b763298cadca0296afade349b0e1c9fb38375ada393eb382682",
+ "typeString": "literal_string \"not active authorized signer for role\""
+ }
+ ],
+ "id": 1971,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "28713:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1978,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "28713:81:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1979,
+ "nodeType": "ExpressionStatement",
+ "src": "28713:81:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1980,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1961,
+ "src": "28809:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 1959,
+ "id": 1981,
+ "nodeType": "Return",
+ "src": "28802:14:1"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1986,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1953,
+ "src": "28847:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1985,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "28837:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 1987,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "28837:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "6e6f7420616e206163636f756e74",
+ "id": 1988,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "28856:16:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_659fe7406443476bd87828d143e98096817552fd61e504905c71382e9d8ad484",
+ "typeString": "literal_string \"not an account\""
+ },
+ "value": "not an account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_659fe7406443476bd87828d143e98096817552fd61e504905c71382e9d8ad484",
+ "typeString": "literal_string \"not an account\""
+ }
+ ],
+ "id": 1984,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "28829:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1989,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "28829:44:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1990,
+ "nodeType": "ExpressionStatement",
+ "src": "28829:44:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1991,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1953,
+ "src": "28886:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 1959,
+ "id": 1992,
+ "nodeType": "Return",
+ "src": "28879:13:1"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 1994,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "signerToAccountWithRole",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1956,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1953,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1994,
+ "src": "28566:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1952,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "28566:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1955,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1994,
+ "src": "28582:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1954,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "28582:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "28565:30:1"
+ },
+ "returnParameters": {
+ "id": 1959,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1958,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1994,
+ "src": "28619:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1957,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "28619:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "28618:9:1"
+ },
+ "scope": 2783,
+ "src": "28533:364:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 2006,
+ "nodeType": "Block",
+ "src": "29277:68:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2002,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1996,
+ "src": "29314:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2003,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "29322:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2001,
+ "name": "signerToAccountWithRole",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1994,
+ "src": "29290:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 2004,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "29290:50:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2000,
+ "id": 2005,
+ "nodeType": "Return",
+ "src": "29283:57:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the account associated with `signer`.\n@param signer The address of the account or currently authorized attestation signer.\n@dev Fails if the `signer` is not an account or currently authorized attestation signer.\n@return The associated account.",
+ "id": 2007,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "attestationSignerToAccount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1997,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1996,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2007,
+ "src": "29229:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1995,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "29229:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "29228:16:1"
+ },
+ "returnParameters": {
+ "id": 2000,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1999,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2007,
+ "src": "29268:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1998,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "29268:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "29267:9:1"
+ },
+ "scope": 2783,
+ "src": "29193:152:1",
+ "stateMutability": "view",
+ "superFunction": 9126,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2019,
+ "nodeType": "Block",
+ "src": "29709:66:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2015,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2009,
+ "src": "29746:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2016,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "29754:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2014,
+ "name": "signerToAccountWithRole",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1994,
+ "src": "29722:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 2017,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "29722:48:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2013,
+ "id": 2018,
+ "nodeType": "Return",
+ "src": "29715:55:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the account associated with `signer`.\n@param signer The address of an account or currently authorized validator signer.\n@dev Fails if the `signer` is not an account or currently authorized validator.\n@return The associated account.",
+ "id": 2020,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "validatorSignerToAccount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2010,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2009,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2020,
+ "src": "29663:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2008,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "29663:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "29662:16:1"
+ },
+ "returnParameters": {
+ "id": 2013,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2012,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2020,
+ "src": "29700:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2011,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "29700:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "29699:9:1"
+ },
+ "scope": 2783,
+ "src": "29629:146:1",
+ "stateMutability": "view",
+ "superFunction": 9119,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2032,
+ "nodeType": "Block",
+ "src": "30134:61:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2028,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2022,
+ "src": "30171:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2029,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "30179:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2027,
+ "name": "signerToAccountWithRole",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1994,
+ "src": "30147:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 2030,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "30147:43:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2026,
+ "id": 2031,
+ "nodeType": "Return",
+ "src": "30140:50:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the account associated with `signer`.\n@param signer The address of the account or currently authorized vote signer.\n@dev Fails if the `signer` is not an account or currently authorized vote signer.\n@return The associated account.",
+ "id": 2033,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "voteSignerToAccount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2023,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2022,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2033,
+ "src": "30086:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2021,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "30086:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "30085:16:1"
+ },
+ "returnParameters": {
+ "id": 2026,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2025,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2033,
+ "src": "30125:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2024,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "30125:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "30124:9:1"
+ },
+ "scope": 2783,
+ "src": "30057:138:1",
+ "stateMutability": "view",
+ "superFunction": 9112,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2065,
+ "nodeType": "Block",
+ "src": "30542:229:1",
+ "statements": [
+ {
+ "assignments": [
+ 2041
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2041,
+ "name": "authorizingAccount",
+ "nodeType": "VariableDeclaration",
+ "scope": 2065,
+ "src": "30548:26:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2040,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "30548:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2045,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2042,
+ "name": "authorizedBy",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 123,
+ "src": "30577:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ }
+ },
+ "id": 2044,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2043,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2035,
+ "src": "30590:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "30577:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "30548:49:1"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2050,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2046,
+ "name": "authorizingAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2041,
+ "src": "30607:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2048,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "30637:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 2047,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "30629:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 2049,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "30629:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "30607:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "id": 2063,
+ "nodeType": "Block",
+ "src": "30687:80:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2056,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2035,
+ "src": "30713:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 2055,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "30703:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 2057,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "30703:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4e6f7420616e206163636f756e74",
+ "id": 2058,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "30722:16:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3",
+ "typeString": "literal_string \"Not an account\""
+ },
+ "value": "Not an account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3",
+ "typeString": "literal_string \"Not an account\""
+ }
+ ],
+ "id": 2054,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "30695:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 2059,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "30695:44:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 2060,
+ "nodeType": "ExpressionStatement",
+ "src": "30695:44:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2061,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2035,
+ "src": "30754:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2039,
+ "id": 2062,
+ "nodeType": "Return",
+ "src": "30747:13:1"
+ }
+ ]
+ },
+ "id": 2064,
+ "nodeType": "IfStatement",
+ "src": "30603:164:1",
+ "trueBody": {
+ "id": 2053,
+ "nodeType": "Block",
+ "src": "30641:40:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2051,
+ "name": "authorizingAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2041,
+ "src": "30656:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2039,
+ "id": 2052,
+ "nodeType": "Return",
+ "src": "30649:25:1"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "documentation": "@notice Returns the account associated with `signer`.\n@param signer The address of the account or previously authorized signer.\n@dev Fails if the `signer` is not an account or previously authorized signer.\n@return The associated account.",
+ "id": 2066,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "signerToAccount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2036,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2035,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2066,
+ "src": "30494:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2034,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "30494:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "30493:16:1"
+ },
+ "returnParameters": {
+ "id": 2039,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2038,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2066,
+ "src": "30533:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2037,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "30533:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "30532:9:1"
+ },
+ "scope": 2783,
+ "src": "30469:302:1",
+ "stateMutability": "view",
+ "superFunction": 9133,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2085,
+ "nodeType": "Block",
+ "src": "30963:92:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 2083,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 2079,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 2075,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2073,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2068,
+ "src": "30976:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2074,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "30984:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "30976:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 2078,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2076,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2068,
+ "src": "30998:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2077,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "31006:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "30998:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "30976:45:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 2082,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2080,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2068,
+ "src": "31025:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2081,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "31033:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "31025:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "30976:74:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2072,
+ "id": 2084,
+ "nodeType": "Return",
+ "src": "30969:81:1"
+ }
+ ]
+ },
+ "documentation": "@notice Checks whether the role is one of Vote, Validator or Attestation\n@param role The role to check",
+ "id": 2086,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isLegacyRole",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2069,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2068,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 2086,
+ "src": "30922:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2067,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "30922:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "30921:14:1"
+ },
+ "returnParameters": {
+ "id": 2072,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2071,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2086,
+ "src": "30957:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2070,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "30957:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "30956:6:1"
+ },
+ "scope": 2783,
+ "src": "30900:155:1",
+ "stateMutability": "pure",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2153,
+ "nodeType": "Block",
+ "src": "31396:439:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2097,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2090,
+ "src": "31423:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2096,
+ "name": "isLegacyRole",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2086,
+ "src": "31410:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (bytes32) pure returns (bool)"
+ }
+ },
+ "id": 2098,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "31410:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "526f6c65206973206e6f742061206c6567616379207369676e6572",
+ "id": 2099,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "31430:29:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_d1382570bd35150f75e8fed125d4247737d7dd22bdbd72e789e6f21cc9b78de1",
+ "typeString": "literal_string \"Role is not a legacy signer\""
+ },
+ "value": "Role is not a legacy signer"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_d1382570bd35150f75e8fed125d4247737d7dd22bdbd72e789e6f21cc9b78de1",
+ "typeString": "literal_string \"Role is not a legacy signer\""
+ }
+ ],
+ "id": 2095,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "31402:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 2100,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "31402:58:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 2101,
+ "nodeType": "ExpressionStatement",
+ "src": "31402:58:1"
+ },
+ {
+ "assignments": [
+ 2103
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2103,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2153,
+ "src": "31467:23:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 2102,
+ "name": "Account",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 110,
+ "src": "31467:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2107,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2104,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "31493:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 2106,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2105,
+ "name": "_account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2088,
+ "src": "31502:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "31493:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "31467:44:1"
+ },
+ {
+ "assignments": [
+ 2109
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2109,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2153,
+ "src": "31517:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2108,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "31517:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2110,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "31517:14:1"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 2113,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2111,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2090,
+ "src": "31541:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2112,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "31549:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "31541:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 2123,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2121,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2090,
+ "src": "31625:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2122,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "31633:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "31625:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 2133,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2131,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2090,
+ "src": "31713:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2132,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "31721:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "31713:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 2141,
+ "nodeType": "IfStatement",
+ "src": "31709:68:1",
+ "trueBody": {
+ "id": 2140,
+ "nodeType": "Block",
+ "src": "31733:44:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2138,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 2134,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2109,
+ "src": "31741:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2135,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2103,
+ "src": "31750:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 2136,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "31750:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 2137,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "vote",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 87,
+ "src": "31750:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "31741:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 2139,
+ "nodeType": "ExpressionStatement",
+ "src": "31741:29:1"
+ }
+ ]
+ }
+ },
+ "id": 2142,
+ "nodeType": "IfStatement",
+ "src": "31621:156:1",
+ "trueBody": {
+ "id": 2130,
+ "nodeType": "Block",
+ "src": "31652:51:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2128,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 2124,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2109,
+ "src": "31660:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2125,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2103,
+ "src": "31669:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 2126,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "31669:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 2127,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "attestation",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 91,
+ "src": "31669:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "31660:36:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 2129,
+ "nodeType": "ExpressionStatement",
+ "src": "31660:36:1"
+ }
+ ]
+ }
+ },
+ "id": 2143,
+ "nodeType": "IfStatement",
+ "src": "31537:240:1",
+ "trueBody": {
+ "id": 2120,
+ "nodeType": "Block",
+ "src": "31566:49:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2118,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 2114,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2109,
+ "src": "31574:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2115,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2103,
+ "src": "31583:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 2116,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "31583:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 2117,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "validator",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 89,
+ "src": "31583:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "31574:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 2119,
+ "nodeType": "ExpressionStatement",
+ "src": "31574:34:1"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2148,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2144,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2109,
+ "src": "31790:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2146,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "31808:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 2145,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "31800:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 2147,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "31800:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "31790:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseExpression": {
+ "argumentTypes": null,
+ "id": 2150,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2109,
+ "src": "31824:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 2151,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "Conditional",
+ "src": "31790:40:1",
+ "trueExpression": {
+ "argumentTypes": null,
+ "id": 2149,
+ "name": "_account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2088,
+ "src": "31813:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2094,
+ "id": 2152,
+ "nodeType": "Return",
+ "src": "31783:47:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the legacy signer for the specified account and \nrole. If no signer has been specified it will return the account itself.\n@param _account The address of the account.\n@param role The role of the signer.",
+ "id": 2154,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getLegacySigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2091,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2088,
+ "name": "_account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2154,
+ "src": "31334:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2087,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "31334:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2090,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 2154,
+ "src": "31352:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2089,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "31352:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "31333:32:1"
+ },
+ "returnParameters": {
+ "id": 2094,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2093,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2154,
+ "src": "31387:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2092,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "31387:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "31386:9:1"
+ },
+ "scope": 2783,
+ "src": "31309:526:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2180,
+ "nodeType": "Block",
+ "src": "32176:130:1",
+ "statements": [
+ {
+ "assignments": [
+ 2164
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2164,
+ "name": "defaultSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 2180,
+ "src": "32182:21:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2163,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "32182:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2170,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2165,
+ "name": "defaultSigners",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 129,
+ "src": "32206:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => address))"
+ }
+ },
+ "id": 2167,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2166,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2156,
+ "src": "32221:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "32206:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 2169,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2168,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2158,
+ "src": "32230:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "32206:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "32182:53:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2175,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2171,
+ "name": "defaultSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2164,
+ "src": "32248:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2173,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "32273:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 2172,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "32265:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 2174,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "32265:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "32248:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseExpression": {
+ "argumentTypes": null,
+ "id": 2177,
+ "name": "defaultSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2164,
+ "src": "32288:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 2178,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "Conditional",
+ "src": "32248:53:1",
+ "trueExpression": {
+ "argumentTypes": null,
+ "id": 2176,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2156,
+ "src": "32278:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2162,
+ "id": 2179,
+ "nodeType": "Return",
+ "src": "32241:60:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the default signer for the specified account and \nrole. If no signer has been specified it will return the account itself.\n@param account The address of the account.\n@param role The role of the signer.",
+ "id": 2181,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getDefaultSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2159,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2156,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2181,
+ "src": "32115:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2155,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "32115:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2158,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 2181,
+ "src": "32132:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2157,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "32132:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "32114:31:1"
+ },
+ "returnParameters": {
+ "id": 2162,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2161,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2181,
+ "src": "32167:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2160,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "32167:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "32166:9:1"
+ },
+ "scope": 2783,
+ "src": "32089:217:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2203,
+ "nodeType": "Block",
+ "src": "32647:103:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "condition": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2191,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2185,
+ "src": "32673:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2190,
+ "name": "isLegacyRole",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2086,
+ "src": "32660:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (bytes32) pure returns (bool)"
+ }
+ },
+ "id": 2192,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "32660:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2198,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2183,
+ "src": "32731:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2199,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2185,
+ "src": "32740:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2197,
+ "name": "getDefaultSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2181,
+ "src": "32714:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 2200,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "32714:31:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 2201,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "Conditional",
+ "src": "32660:85:1",
+ "trueExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2194,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2183,
+ "src": "32697:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2195,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2185,
+ "src": "32706:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2193,
+ "name": "getLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2154,
+ "src": "32681:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 2196,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "32681:30:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2189,
+ "id": 2202,
+ "nodeType": "Return",
+ "src": "32653:92:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the indexed signer for the specified account and role. \nIf no signer has been specified it will return the account itself.\n@param account The address of the account.\n@param role The role of the signer.",
+ "id": 2204,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getIndexedSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2186,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2183,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2204,
+ "src": "32586:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2182,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "32586:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2185,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 2204,
+ "src": "32603:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2184,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "32603:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "32585:31:1"
+ },
+ "returnParameters": {
+ "id": 2189,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2188,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2204,
+ "src": "32638:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2187,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "32638:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "32637:9:1"
+ },
+ "scope": 2783,
+ "src": "32560:190:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2216,
+ "nodeType": "Block",
+ "src": "33012:54:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2212,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2206,
+ "src": "33041:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2213,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "33050:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2211,
+ "name": "getLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2154,
+ "src": "33025:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 2214,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "33025:36:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2210,
+ "id": 2215,
+ "nodeType": "Return",
+ "src": "33018:43:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the vote signer for the specified account.\n@param account The address of the account.\n@return The address with which the account can sign votes.",
+ "id": 2217,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getVoteSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2207,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2206,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2217,
+ "src": "32965:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2205,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "32965:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "32964:17:1"
+ },
+ "returnParameters": {
+ "id": 2210,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2209,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2217,
+ "src": "33003:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2208,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "33003:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "33002:9:1"
+ },
+ "scope": 2783,
+ "src": "32942:124:1",
+ "stateMutability": "view",
+ "superFunction": 9154,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2229,
+ "nodeType": "Block",
+ "src": "33357:59:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2225,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2219,
+ "src": "33386:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2226,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "33395:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2224,
+ "name": "getLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2154,
+ "src": "33370:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 2227,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "33370:41:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2223,
+ "id": 2228,
+ "nodeType": "Return",
+ "src": "33363:48:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the validator signer for the specified account.\n@param account The address of the account.\n@return The address with which the account can register a validator or group.",
+ "id": 2230,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getValidatorSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2220,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2219,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2230,
+ "src": "33310:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2218,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "33310:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "33309:17:1"
+ },
+ "returnParameters": {
+ "id": 2223,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2222,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2230,
+ "src": "33348:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2221,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "33348:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "33347:9:1"
+ },
+ "scope": 2783,
+ "src": "33282:134:1",
+ "stateMutability": "view",
+ "superFunction": 9147,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2242,
+ "nodeType": "Block",
+ "src": "33699:61:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2238,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2232,
+ "src": "33728:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2239,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "33737:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2237,
+ "name": "getLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2154,
+ "src": "33712:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 2240,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "33712:43:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2236,
+ "id": 2241,
+ "nodeType": "Return",
+ "src": "33705:50:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the attestation signer for the specified account.\n@param account The address of the account.\n@return The address with which the account can sign attestations.",
+ "id": 2243,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getAttestationSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2233,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2232,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2243,
+ "src": "33652:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2231,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "33652:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "33651:17:1"
+ },
+ "returnParameters": {
+ "id": 2236,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2235,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2243,
+ "src": "33690:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2234,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "33690:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "33689:9:1"
+ },
+ "scope": 2783,
+ "src": "33622:138:1",
+ "stateMutability": "view",
+ "superFunction": 9140,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2259,
+ "nodeType": "Block",
+ "src": "33972:59:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2257,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2253,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2245,
+ "src": "34001:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2254,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2247,
+ "src": "34010:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2252,
+ "name": "getLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2154,
+ "src": "33985:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 2255,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "33985:30:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2256,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2245,
+ "src": "34019:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "33985:41:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2251,
+ "id": 2258,
+ "nodeType": "Return",
+ "src": "33978:48:1"
+ }
+ ]
+ },
+ "documentation": "@notice Checks whether or not the account has an indexed signer\nregistered for one of the legacy roles",
+ "id": 2260,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "hasLegacySigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2248,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2245,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2260,
+ "src": "33914:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2244,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "33914:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2247,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 2260,
+ "src": "33931:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2246,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "33931:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "33913:31:1"
+ },
+ "returnParameters": {
+ "id": 2251,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2250,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2260,
+ "src": "33966:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2249,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "33966:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "33965:6:1"
+ },
+ "scope": 2783,
+ "src": "33889:142:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2276,
+ "nodeType": "Block",
+ "src": "34227:60:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2274,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2270,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2262,
+ "src": "34257:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2271,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2264,
+ "src": "34266:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2269,
+ "name": "getDefaultSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2181,
+ "src": "34240:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 2272,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "34240:31:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2273,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2262,
+ "src": "34275:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "34240:42:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2268,
+ "id": 2275,
+ "nodeType": "Return",
+ "src": "34233:49:1"
+ }
+ ]
+ },
+ "documentation": "@notice Checks whether or not the account has an indexed signer\nregistered for a role",
+ "id": 2277,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "hasDefaultSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2265,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2262,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2277,
+ "src": "34169:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2261,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "34169:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2264,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 2277,
+ "src": "34186:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2263,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "34186:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "34168:31:1"
+ },
+ "returnParameters": {
+ "id": 2268,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2267,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2277,
+ "src": "34221:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2266,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "34221:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "34220:6:1"
+ },
+ "scope": 2783,
+ "src": "34143:144:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2299,
+ "nodeType": "Block",
+ "src": "34485:103:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "condition": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2287,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2281,
+ "src": "34511:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2286,
+ "name": "isLegacyRole",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2086,
+ "src": "34498:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (bytes32) pure returns (bool)"
+ }
+ },
+ "id": 2288,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "34498:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2294,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2279,
+ "src": "34569:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2295,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2281,
+ "src": "34578:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2293,
+ "name": "hasDefaultSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2277,
+ "src": "34552:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 2296,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "34552:31:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 2297,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "Conditional",
+ "src": "34498:85:1",
+ "trueExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2290,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2279,
+ "src": "34535:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2291,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2281,
+ "src": "34544:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2289,
+ "name": "hasLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2260,
+ "src": "34519:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 2292,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "34519:30:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2285,
+ "id": 2298,
+ "nodeType": "Return",
+ "src": "34491:92:1"
+ }
+ ]
+ },
+ "documentation": "@notice Checks whether or not the account has an indexed signer\nregistered for the role",
+ "id": 2300,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "hasIndexedSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2282,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2279,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2300,
+ "src": "34427:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2278,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "34427:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2281,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 2300,
+ "src": "34444:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2280,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "34444:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "34426:31:1"
+ },
+ "returnParameters": {
+ "id": 2285,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2284,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2300,
+ "src": "34479:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2283,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "34479:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "34478:6:1"
+ },
+ "scope": 2783,
+ "src": "34401:187:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2319,
+ "nodeType": "Block",
+ "src": "34863:78:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2310,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2302,
+ "src": "34893:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2314,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2304,
+ "src": "34929:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 2312,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45783,
+ "src": "34912:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 2313,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encodePacked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "34912:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 2315,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "34912:22:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 2311,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45790,
+ "src": "34902:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 2316,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "34902:33:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2309,
+ "name": "hasIndexedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2300,
+ "src": "34876:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 2317,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "34876:60:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2308,
+ "id": 2318,
+ "nodeType": "Return",
+ "src": "34869:67:1"
+ }
+ ]
+ },
+ "documentation": "@notice Checks whether or not the account has a signer\nregistered for the plaintext role.\n@dev See `hasIndexedSigner` for more gas efficient call.",
+ "id": 2320,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "hasAuthorizedSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2305,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2302,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2320,
+ "src": "34795:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2301,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "34795:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2304,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 2320,
+ "src": "34812:20:1",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 2303,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "34812:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "34794:39:1"
+ },
+ "returnParameters": {
+ "id": 2308,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2307,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2320,
+ "src": "34857:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2306,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "34857:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "34856:6:1"
+ },
+ "scope": 2783,
+ "src": "34766:175:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2332,
+ "nodeType": "Block",
+ "src": "35227:54:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2328,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2322,
+ "src": "35256:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2329,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "35265:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2327,
+ "name": "hasLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2260,
+ "src": "35240:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 2330,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "35240:36:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2326,
+ "id": 2331,
+ "nodeType": "Return",
+ "src": "35233:43:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns if account has specified a dedicated vote signer.\n@param account The address of the account.\n@return Whether the account has specified a dedicated vote signer.",
+ "id": 2333,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "hasAuthorizedVoteSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2323,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2322,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2333,
+ "src": "35181:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2321,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "35181:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "35180:17:1"
+ },
+ "returnParameters": {
+ "id": 2326,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2325,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2333,
+ "src": "35221:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2324,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "35221:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "35220:6:1"
+ },
+ "scope": 2783,
+ "src": "35148:133:1",
+ "stateMutability": "view",
+ "superFunction": 9161,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2345,
+ "nodeType": "Block",
+ "src": "35582:59:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2341,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2335,
+ "src": "35611:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2342,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "35620:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2340,
+ "name": "hasLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2260,
+ "src": "35595:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 2343,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "35595:41:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2339,
+ "id": 2344,
+ "nodeType": "Return",
+ "src": "35588:48:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns if account has specified a dedicated validator signer.\n@param account The address of the account.\n@return Whether the account has specified a dedicated validator signer.",
+ "id": 2346,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "hasAuthorizedValidatorSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2336,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2335,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2346,
+ "src": "35536:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2334,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "35536:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "35535:17:1"
+ },
+ "returnParameters": {
+ "id": 2339,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2338,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2346,
+ "src": "35576:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2337,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "35576:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "35575:6:1"
+ },
+ "scope": 2783,
+ "src": "35498:143:1",
+ "stateMutability": "view",
+ "superFunction": 9168,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2358,
+ "nodeType": "Block",
+ "src": "35948:61:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2354,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2348,
+ "src": "35977:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2355,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "35986:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2353,
+ "name": "hasLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2260,
+ "src": "35961:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 2356,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "35961:43:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2352,
+ "id": 2357,
+ "nodeType": "Return",
+ "src": "35954:50:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns if account has specified a dedicated attestation signer.\n@param account The address of the account.\n@return Whether the account has specified a dedicated attestation signer.",
+ "id": 2359,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "hasAuthorizedAttestationSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2349,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2348,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2359,
+ "src": "35902:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2347,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "35902:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "35901:17:1"
+ },
+ "returnParameters": {
+ "id": 2352,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2351,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2359,
+ "src": "35942:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2350,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "35942:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "35941:6:1"
+ },
+ "scope": 2783,
+ "src": "35862:147:1",
+ "stateMutability": "view",
+ "superFunction": 9175,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2371,
+ "nodeType": "Block",
+ "src": "36256:40:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2366,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "36269:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 2368,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2367,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2361,
+ "src": "36278:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "36269:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "id": 2369,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "name",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 105,
+ "src": "36269:22:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "functionReturnParameters": 2365,
+ "id": 2370,
+ "nodeType": "Return",
+ "src": "36262:29:1"
+ }
+ ]
+ },
+ "documentation": "@notice Getter for the name of an account.\n@param account The address of the account to get the name for.\n@return name The name of the account.",
+ "id": 2372,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getName",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2362,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2361,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2372,
+ "src": "36201:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2360,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "36201:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "36200:17:1"
+ },
+ "returnParameters": {
+ "id": 2365,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2364,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2372,
+ "src": "36241:13:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 2363,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "36241:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "36240:15:1"
+ },
+ "scope": 2783,
+ "src": "36184:112:1",
+ "stateMutability": "view",
+ "superFunction": 9255,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2384,
+ "nodeType": "Block",
+ "src": "36572:47:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2379,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "36585:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 2381,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2380,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2374,
+ "src": "36594:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "36585:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "id": 2382,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "metadataURL",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 109,
+ "src": "36585:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "functionReturnParameters": 2378,
+ "id": 2383,
+ "nodeType": "Return",
+ "src": "36578:36:1"
+ }
+ ]
+ },
+ "documentation": "@notice Getter for the metadata of an account.\n@param account The address of the account to get the metadata for.\n@return metadataURL The URL to access the metadata.",
+ "id": 2385,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getMetadataURL",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2375,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2374,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2385,
+ "src": "36517:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2373,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "36517:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "36516:17:1"
+ },
+ "returnParameters": {
+ "id": 2378,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2377,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2385,
+ "src": "36557:13:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 2376,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "36557:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "36556:15:1"
+ },
+ "scope": 2783,
+ "src": "36493:126:1",
+ "stateMutability": "view",
+ "superFunction": 9237,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2523,
+ "nodeType": "Block",
+ "src": "37039:636:1",
+ "statements": [
+ {
+ "assignments": [
+ 2397
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2397,
+ "name": "totalSize",
+ "nodeType": "VariableDeclaration",
+ "scope": 2523,
+ "src": "37045:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 2396,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "37045:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2399,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2398,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "37065:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "37045:21:1"
+ },
+ {
+ "assignments": [
+ 2403
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2403,
+ "name": "sizes",
+ "nodeType": "VariableDeclaration",
+ "scope": 2523,
+ "src": "37072:22:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 2401,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "37072:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2402,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "37072:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2410,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2407,
+ "name": "accountsToQuery",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2388,
+ "src": "37111:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 2408,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "37111:22:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 2406,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "NewExpression",
+ "src": "37097:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
+ "typeString": "function (uint256) pure returns (uint256[] memory)"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 2404,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "37101:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2405,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "37101:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ }
+ },
+ "id": 2409,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "37097:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "37072:62:1"
+ },
+ {
+ "body": {
+ "id": 2449,
+ "nodeType": "Block",
+ "src": "37202:123:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2438,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2426,
+ "name": "sizes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2403,
+ "src": "37210:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "id": 2428,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2427,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2412,
+ "src": "37216:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "37210:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2430,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "37227:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 2434,
+ "indexExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2431,
+ "name": "accountsToQuery",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2388,
+ "src": "37236:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 2433,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2432,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2412,
+ "src": "37252:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "37236:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "37227:28:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "id": 2435,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "metadataURL",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 109,
+ "src": "37227:40:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ ],
+ "id": 2429,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "37221:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+ "typeString": "type(bytes storage pointer)"
+ },
+ "typeName": "bytes"
+ },
+ "id": 2436,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "37221:47:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes storage pointer"
+ }
+ },
+ "id": 2437,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "37221:54:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "37210:65:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2439,
+ "nodeType": "ExpressionStatement",
+ "src": "37210:65:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2447,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 2440,
+ "name": "totalSize",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2397,
+ "src": "37283:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2443,
+ "name": "sizes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2403,
+ "src": "37309:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "id": 2445,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2444,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2412,
+ "src": "37315:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "37309:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 2441,
+ "name": "totalSize",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2397,
+ "src": "37295:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2442,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 44380,
+ "src": "37295:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 2446,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "37295:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "37283:35:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2448,
+ "nodeType": "ExpressionStatement",
+ "src": "37283:35:1"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 2418,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2415,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2412,
+ "src": "37160:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2416,
+ "name": "accountsToQuery",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2388,
+ "src": "37164:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 2417,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "37164:22:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "37160:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 2450,
+ "initializationExpression": {
+ "assignments": [
+ 2412
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2412,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 2450,
+ "src": "37145:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 2411,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "37145:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2414,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2413,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "37157:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "37145:13:1"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2424,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 2419,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2412,
+ "src": "37188:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 2422,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "37198:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 2420,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2412,
+ "src": "37192:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2421,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 44380,
+ "src": "37192:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 2423,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "37192:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "37188:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2425,
+ "nodeType": "ExpressionStatement",
+ "src": "37188:12:1"
+ },
+ "nodeType": "ForStatement",
+ "src": "37140:185:1"
+ },
+ {
+ "assignments": [
+ 2452
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2452,
+ "name": "data",
+ "nodeType": "VariableDeclaration",
+ "scope": 2523,
+ "src": "37331:17:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 2451,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "37331:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2457,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2455,
+ "name": "totalSize",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2397,
+ "src": "37361:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 2454,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "NewExpression",
+ "src": "37351:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
+ "typeString": "function (uint256) pure returns (bytes memory)"
+ },
+ "typeName": {
+ "id": 2453,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "37355:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ }
+ },
+ "id": 2456,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "37351:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory",
+ "typeString": "bytes memory"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "37331:40:1"
+ },
+ {
+ "assignments": [
+ 2459
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2459,
+ "name": "pointer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2523,
+ "src": "37377:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 2458,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "37377:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2461,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2460,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "37395:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "37377:19:1"
+ },
+ {
+ "body": {
+ "id": 2517,
+ "nodeType": "Block",
+ "src": "37464:181:1",
+ "statements": [
+ {
+ "body": {
+ "id": 2515,
+ "nodeType": "Block",
+ "src": "37520:119:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2506,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2493,
+ "name": "data",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2452,
+ "src": "37530:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ "id": 2495,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2494,
+ "name": "pointer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2459,
+ "src": "37535:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "37530:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes1",
+ "typeString": "bytes1"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2497,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "37552:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 2501,
+ "indexExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2498,
+ "name": "accountsToQuery",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2388,
+ "src": "37561:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 2500,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2499,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2463,
+ "src": "37577:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "37561:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "37552:28:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "id": 2502,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "metadataURL",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 109,
+ "src": "37552:40:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ ],
+ "id": 2496,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "37546:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+ "typeString": "type(bytes storage pointer)"
+ },
+ "typeName": "bytes"
+ },
+ "id": 2503,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "37546:47:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes storage pointer"
+ }
+ },
+ "id": 2505,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2504,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2478,
+ "src": "37594:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "37546:50:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes1",
+ "typeString": "bytes1"
+ }
+ },
+ "src": "37530:66:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes1",
+ "typeString": "bytes1"
+ }
+ },
+ "id": 2507,
+ "nodeType": "ExpressionStatement",
+ "src": "37530:66:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2513,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 2508,
+ "name": "pointer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2459,
+ "src": "37606:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 2511,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "37628:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 2509,
+ "name": "pointer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2459,
+ "src": "37616:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2510,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 44380,
+ "src": "37616:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 2512,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "37616:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "37606:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2514,
+ "nodeType": "ExpressionStatement",
+ "src": "37606:24:1"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 2485,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2481,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2478,
+ "src": "37492:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2482,
+ "name": "sizes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2403,
+ "src": "37496:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "id": 2484,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2483,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2463,
+ "src": "37502:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "37496:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "37492:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 2516,
+ "initializationExpression": {
+ "assignments": [
+ 2478
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2478,
+ "name": "j",
+ "nodeType": "VariableDeclaration",
+ "scope": 2516,
+ "src": "37477:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 2477,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "37477:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2480,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2479,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "37489:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "37477:13:1"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2491,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 2486,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2478,
+ "src": "37506:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 2489,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "37516:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 2487,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2478,
+ "src": "37510:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2488,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 44380,
+ "src": "37510:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 2490,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "37510:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "37506:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2492,
+ "nodeType": "ExpressionStatement",
+ "src": "37506:12:1"
+ },
+ "nodeType": "ForStatement",
+ "src": "37472:167:1"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 2469,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2466,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2463,
+ "src": "37422:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2467,
+ "name": "accountsToQuery",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2388,
+ "src": "37426:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 2468,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "37426:22:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "37422:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 2518,
+ "initializationExpression": {
+ "assignments": [
+ 2463
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2463,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 2518,
+ "src": "37407:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 2462,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "37407:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2465,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2464,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "37419:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "37407:13:1"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2475,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 2470,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2463,
+ "src": "37450:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 2473,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "37460:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 2471,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2463,
+ "src": "37454:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2472,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 44380,
+ "src": "37454:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 2474,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "37454:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "37450:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2476,
+ "nodeType": "ExpressionStatement",
+ "src": "37450:12:1"
+ },
+ "nodeType": "ForStatement",
+ "src": "37402:243:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 2519,
+ "name": "sizes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2403,
+ "src": "37658:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2520,
+ "name": "data",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2452,
+ "src": "37665:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "id": 2521,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "37657:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$",
+ "typeString": "tuple(uint256[] memory,bytes memory)"
+ }
+ },
+ "functionReturnParameters": 2395,
+ "id": 2522,
+ "nodeType": "Return",
+ "src": "37650:20:1"
+ }
+ ]
+ },
+ "documentation": "@notice Getter for the metadata of multiple accounts.\n@param accountsToQuery The addresses of the accounts to get the metadata for.\n@return (stringLengths[] - the length of each string in bytes\n data - all strings concatenated\n )",
+ "id": 2524,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "batchGetMetadataURL",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2389,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2388,
+ "name": "accountsToQuery",
+ "nodeType": "VariableDeclaration",
+ "scope": 2524,
+ "src": "36934:34:1",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 2386,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "36934:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 2387,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "36934:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "36933:36:1"
+ },
+ "returnParameters": {
+ "id": 2395,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2392,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2524,
+ "src": "37005:16:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 2390,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "37005:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2391,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "37005:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2394,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2524,
+ "src": "37023:12:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 2393,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "37023:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "37004:32:1"
+ },
+ "scope": 2783,
+ "src": "36905:770:1",
+ "stateMutability": "view",
+ "superFunction": 9248,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2536,
+ "nodeType": "Block",
+ "src": "37998:53:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2531,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "38011:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 2533,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2532,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2526,
+ "src": "38020:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "38011:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "id": 2534,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "dataEncryptionKey",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 107,
+ "src": "38011:35:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "functionReturnParameters": 2530,
+ "id": 2535,
+ "nodeType": "Return",
+ "src": "38004:42:1"
+ }
+ ]
+ },
+ "documentation": "@notice Getter for the data encryption key and version.\n@param account The address of the account to get the key for\n@return dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed.",
+ "id": 2537,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getDataEncryptionKey",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2527,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2526,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2537,
+ "src": "37944:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2525,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "37944:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "37943:17:1"
+ },
+ "returnParameters": {
+ "id": 2530,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2529,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2537,
+ "src": "37984:12:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 2528,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "37984:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "37983:14:1"
+ },
+ "scope": 2783,
+ "src": "37914:137:1",
+ "stateMutability": "view",
+ "superFunction": 9223,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2549,
+ "nodeType": "Block",
+ "src": "38305:49:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2544,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "38318:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 2546,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2545,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2539,
+ "src": "38327:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "38318:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "id": 2547,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "walletAddress",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 103,
+ "src": "38318:31:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2543,
+ "id": 2548,
+ "nodeType": "Return",
+ "src": "38311:38:1"
+ }
+ ]
+ },
+ "documentation": "@notice Getter for the wallet address for an account\n@param account The address of the account to get the wallet address for\n@return Wallet address",
+ "id": 2550,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getWalletAddress",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2540,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2539,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2550,
+ "src": "38256:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2538,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "38256:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "38255:17:1"
+ },
+ "returnParameters": {
+ "id": 2543,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2542,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2550,
+ "src": "38296:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2541,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "38296:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "38295:9:1"
+ },
+ "scope": 2783,
+ "src": "38230:124:1",
+ "stateMutability": "view",
+ "superFunction": 9230,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2563,
+ "nodeType": "Block",
+ "src": "38603:44:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2557,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "38617:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 2559,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2558,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2552,
+ "src": "38626:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "38617:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "id": 2560,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "exists",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 99,
+ "src": "38617:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 2561,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "38616:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2556,
+ "id": 2562,
+ "nodeType": "Return",
+ "src": "38609:33:1"
+ }
+ ]
+ },
+ "documentation": "@notice Check if an account already exists.\n@param account The address of the account\n@return Returns `true` if account exists. Returns `false` otherwise.",
+ "id": 2564,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isAccount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2553,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2552,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2564,
+ "src": "38559:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2551,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "38559:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "38558:17:1"
+ },
+ "returnParameters": {
+ "id": 2556,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2555,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2564,
+ "src": "38597:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2554,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "38597:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "38596:6:1"
+ },
+ "scope": 2783,
+ "src": "38540:107:1",
+ "stateMutability": "view",
+ "superFunction": 9105,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2578,
+ "nodeType": "Block",
+ "src": "38901:45:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 2575,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "!",
+ "prefix": true,
+ "src": "38915:25:1",
+ "subExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2571,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "38916:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 2573,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2572,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2566,
+ "src": "38925:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "38916:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "id": 2574,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "exists",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 99,
+ "src": "38916:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 2576,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "38914:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2570,
+ "id": 2577,
+ "nodeType": "Return",
+ "src": "38907:34:1"
+ }
+ ]
+ },
+ "documentation": "@notice Check if an account already exists.\n@param account The address of the account\n@return Returns `false` if account exists. Returns `true` otherwise.",
+ "id": 2579,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isNotAccount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2567,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2566,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2579,
+ "src": "38855:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2565,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "38855:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "38854:17:1"
+ },
+ "returnParameters": {
+ "id": 2570,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2569,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2579,
+ "src": "38895:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2568,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "38895:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "38894:6:1"
+ },
+ "scope": 2783,
+ "src": "38833:113:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 2595,
+ "nodeType": "Block",
+ "src": "39236:54:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2592,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2586,
+ "name": "authorizedBy",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 123,
+ "src": "39250:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ }
+ },
+ "id": 2588,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2587,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2581,
+ "src": "39263:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "39250:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2590,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "39282:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 2589,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "39274:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 2591,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "39274:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "39250:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 2593,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "39249:36:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2585,
+ "id": 2594,
+ "nodeType": "Return",
+ "src": "39242:43:1"
+ }
+ ]
+ },
+ "documentation": "@notice Check if an address has been an authorized signer for an account.\n@param signer The possibly authorized address.\n@return Returns `true` if authorized. Returns `false` otherwise.",
+ "id": 2596,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isAuthorizedSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2582,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2581,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2596,
+ "src": "39191:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2580,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "39191:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "39190:16:1"
+ },
+ "returnParameters": {
+ "id": 2585,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2584,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2596,
+ "src": "39230:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2583,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "39230:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "39229:6:1"
+ },
+ "scope": 2783,
+ "src": "39163:127:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2612,
+ "nodeType": "Block",
+ "src": "39587:54:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2609,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2603,
+ "name": "authorizedBy",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 123,
+ "src": "39601:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ }
+ },
+ "id": 2605,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2604,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2598,
+ "src": "39614:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "39601:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2607,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "39633:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 2606,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "39625:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 2608,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "39625:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "39601:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 2610,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "39600:36:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2602,
+ "id": 2611,
+ "nodeType": "Return",
+ "src": "39593:43:1"
+ }
+ ]
+ },
+ "documentation": "@notice Check if an address has not been an authorized signer for an account.\n@param signer The possibly authorized address.\n@return Returns `false` if authorized. Returns `true` otherwise.",
+ "id": 2613,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isNotAuthorizedSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2599,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2598,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2613,
+ "src": "39542:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2597,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "39542:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "39541:16:1"
+ },
+ "returnParameters": {
+ "id": 2602,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2601,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2613,
+ "src": "39581:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2600,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "39581:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "39580:6:1"
+ },
+ "scope": 2783,
+ "src": "39511:130:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 2637,
+ "nodeType": "Block",
+ "src": "40103:89:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 2634,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2628,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2622,
+ "name": "authorizedBy",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 123,
+ "src": "40117:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ }
+ },
+ "id": 2624,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2623,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2617,
+ "src": "40130:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "40117:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2626,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "40149:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 2625,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "40141:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 2627,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "40141:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "40117:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2633,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2629,
+ "name": "authorizedBy",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 123,
+ "src": "40155:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ }
+ },
+ "id": 2631,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2630,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2617,
+ "src": "40168:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "40155:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2632,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2615,
+ "src": "40179:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "40155:31:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "40117:69:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 2635,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "40116:71:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2621,
+ "id": 2636,
+ "nodeType": "Return",
+ "src": "40109:78:1"
+ }
+ ]
+ },
+ "documentation": "@notice Check if `signer` has not been authorized, and if it has been previously\n authorized that it was authorized by `account`.\n@param account The authorizing account address.\n@param signer The possibly authorized address.\n@return Returns `false` if authorized. Returns `true` otherwise.",
+ "id": 2638,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isNotAuthorizedSignerForAnotherAccount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2618,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2615,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2638,
+ "src": "40027:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2614,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "40027:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2617,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2638,
+ "src": "40044:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2616,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "40044:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "40026:33:1"
+ },
+ "returnParameters": {
+ "id": 2621,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2620,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2638,
+ "src": "40095:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2619,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "40095:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "40094:6:1"
+ },
+ "scope": 2783,
+ "src": "39979:213:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 2671,
+ "nodeType": "Block",
+ "src": "40844:162:1",
+ "statements": [
+ {
+ "assignments": [
+ 2650
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2650,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2671,
+ "src": "40850:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2649,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "40850:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2659,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2653,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "40897:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 2654,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "40897:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2655,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2642,
+ "src": "40909:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2656,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2644,
+ "src": "40912:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2657,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2646,
+ "src": "40915:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 2651,
+ "name": "Signatures",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7219,
+ "src": "40867:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Signatures_$7219_$",
+ "typeString": "type(library Signatures)"
+ }
+ },
+ "id": 2652,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getSignerOfAddress",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 7127,
+ "src": "40867:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_delegatecall_pure$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,uint8,bytes32,bytes32) pure returns (address)"
+ }
+ },
+ "id": 2658,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "40867:50:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "40850:67:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2663,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2661,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2650,
+ "src": "40931:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2662,
+ "name": "authorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2640,
+ "src": "40941:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "40931:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "496e76616c6964207369676e6174757265",
+ "id": 2664,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "40953:19:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7",
+ "typeString": "literal_string \"Invalid signature\""
+ },
+ "value": "Invalid signature"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7",
+ "typeString": "literal_string \"Invalid signature\""
+ }
+ ],
+ "id": 2660,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "40923:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 2665,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "40923:50:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 2666,
+ "nodeType": "ExpressionStatement",
+ "src": "40923:50:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2668,
+ "name": "authorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2640,
+ "src": "40990:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 2667,
+ "name": "authorize",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2782,
+ "src": "40980:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 2669,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "40980:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 2670,
+ "nodeType": "ExpressionStatement",
+ "src": "40980:21:1"
+ }
+ ]
+ },
+ "documentation": "@notice Authorizes some role of `msg.sender`'s account to another address.\n@param authorized The address to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev Fails if the address is already authorized to another account or is an account itself.\n@dev Note that once an address is authorized, it may never be authorized again.\n@dev v, r, s constitute `authorized`'s signature on `msg.sender`.",
+ "id": 2672,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "authorizeAddress",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2647,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2640,
+ "name": "authorized",
+ "nodeType": "VariableDeclaration",
+ "scope": 2672,
+ "src": "40785:18:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2639,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "40785:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2642,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 2672,
+ "src": "40805:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 2641,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "40805:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2644,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 2672,
+ "src": "40814:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2643,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "40814:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2646,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 2672,
+ "src": "40825:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2645,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "40825:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "40784:51:1"
+ },
+ "returnParameters": {
+ "id": 2648,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "40844:0:1"
+ },
+ "scope": 2783,
+ "src": "40759:247:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "private"
+ },
+ {
+ "body": {
+ "id": 2710,
+ "nodeType": "Block",
+ "src": "41740:214:1",
+ "statements": [
+ {
+ "assignments": [
+ 2690
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2690,
+ "name": "structHash",
+ "nodeType": "VariableDeclaration",
+ "scope": 2710,
+ "src": "41746:18:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2689,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "41746:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2700,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2694,
+ "name": "EIP712_AUTHORIZE_SIGNER_TYPEHASH",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 142,
+ "src": "41795:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2695,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2674,
+ "src": "41829:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2696,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2676,
+ "src": "41838:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2697,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2678,
+ "src": "41846:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 2692,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45783,
+ "src": "41784:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 2693,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encode",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "41784:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 2698,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "41784:67:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 2691,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45790,
+ "src": "41767:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 2699,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "41767:90:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "41746:111:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2703,
+ "name": "eip712DomainSeparator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 144,
+ "src": "41906:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2704,
+ "name": "structHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2690,
+ "src": "41929:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2705,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2680,
+ "src": "41941:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2706,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2682,
+ "src": "41944:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2707,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2684,
+ "src": "41947:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 2701,
+ "name": "Signatures",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7219,
+ "src": "41870:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Signatures_$7219_$",
+ "typeString": "type(library Signatures)"
+ }
+ },
+ "id": 2702,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getSignerOfTypedDataHash",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 7218,
+ "src": "41870:35:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (bytes32,bytes32,uint8,bytes32,bytes32) pure returns (address)"
+ }
+ },
+ "id": 2708,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "41870:79:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2688,
+ "id": 2709,
+ "nodeType": "Return",
+ "src": "41863:86:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the address that signed the provided role authorization.\n@param account The `account` property signed over in the EIP712 signature\n@param signer The `signer` property signed over in the EIP712 signature\n@param role The `role` property signed over in the EIP712 signature\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@return The address that signed the provided role authorization.",
+ "id": 2711,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getRoleAuthorizationSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2685,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2674,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2711,
+ "src": "41609:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2673,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "41609:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2676,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2711,
+ "src": "41630:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2675,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "41630:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2678,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 2711,
+ "src": "41650:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2677,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "41650:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2680,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 2711,
+ "src": "41668:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 2679,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "41668:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2682,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 2711,
+ "src": "41681:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2681,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "41681:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2684,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 2711,
+ "src": "41696:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2683,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "41696:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "41603:106:1"
+ },
+ "returnParameters": {
+ "id": 2688,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2687,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2711,
+ "src": "41731:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2686,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "41731:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "41730:9:1"
+ },
+ "scope": 2783,
+ "src": "41568:386:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2747,
+ "nodeType": "Block",
+ "src": "42674:177:1",
+ "statements": [
+ {
+ "assignments": [
+ 2725
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2725,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2747,
+ "src": "42680:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2724,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "42680:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2735,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2727,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "42724:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 2728,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "42724:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2729,
+ "name": "authorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2713,
+ "src": "42736:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2730,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2715,
+ "src": "42748:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2731,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2717,
+ "src": "42754:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2732,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2719,
+ "src": "42757:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2733,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2721,
+ "src": "42760:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2726,
+ "name": "getRoleAuthorizationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2711,
+ "src": "42697:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,address,bytes32,uint8,bytes32,bytes32) view returns (address)"
+ }
+ },
+ "id": 2734,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "42697:65:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "42680:82:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2739,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2737,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2725,
+ "src": "42776:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2738,
+ "name": "authorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2713,
+ "src": "42786:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "42776:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "496e76616c6964207369676e6174757265",
+ "id": 2740,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "42798:19:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7",
+ "typeString": "literal_string \"Invalid signature\""
+ },
+ "value": "Invalid signature"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7",
+ "typeString": "literal_string \"Invalid signature\""
+ }
+ ],
+ "id": 2736,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "42768:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 2741,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "42768:50:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 2742,
+ "nodeType": "ExpressionStatement",
+ "src": "42768:50:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2744,
+ "name": "authorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2713,
+ "src": "42835:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 2743,
+ "name": "authorize",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2782,
+ "src": "42825:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 2745,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "42825:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 2746,
+ "nodeType": "ExpressionStatement",
+ "src": "42825:21:1"
+ }
+ ]
+ },
+ "documentation": "@notice Authorizes a role of `msg.sender`'s account to another address (`authorized`).\n@param authorized The address to authorize.\n@param role The role to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev Fails if the address is already authorized to another account or is an account itself.\n@dev Note that this signature is EIP712 compliant over the authorizing `account` \n(`msg.sender`), `signer` (`authorized`) and `role`.",
+ "id": 2748,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "authorizeAddressWithRole",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2722,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2713,
+ "name": "authorized",
+ "nodeType": "VariableDeclaration",
+ "scope": 2748,
+ "src": "42595:18:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2712,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "42595:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2715,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 2748,
+ "src": "42615:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2714,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "42615:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2717,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 2748,
+ "src": "42629:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 2716,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "42629:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2719,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 2748,
+ "src": "42638:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2718,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "42638:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2721,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 2748,
+ "src": "42649:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2720,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "42649:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "42594:65:1"
+ },
+ "returnParameters": {
+ "id": 2723,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "42674:0:1"
+ },
+ "scope": 2783,
+ "src": "42561:290:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "private"
+ },
+ {
+ "body": {
+ "id": 2781,
+ "nodeType": "Block",
+ "src": "43122:301:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2755,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "43146:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 2756,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "43146:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 2754,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "43136:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 2757,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "43136:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "556e6b6e6f776e206163636f756e74",
+ "id": 2758,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "43159:17:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ },
+ "value": "Unknown account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ }
+ ],
+ "id": 2753,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "43128:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 2759,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "43128:49:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 2760,
+ "nodeType": "ExpressionStatement",
+ "src": "43128:49:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 2770,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2763,
+ "name": "authorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2750,
+ "src": "43211:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 2762,
+ "name": "isNotAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2579,
+ "src": "43198:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 2764,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "43198:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2766,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "43265:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 2767,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "43265:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2768,
+ "name": "authorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2750,
+ "src": "43277:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 2765,
+ "name": "isNotAuthorizedSignerForAnotherAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2638,
+ "src": "43226:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address,address) view returns (bool)"
+ }
+ },
+ "id": 2769,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "43226:62:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "43198:90:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "43616e6e6f742072652d617574686f72697a652061646472657373206f72206c6f636b656420676f6c64206163636f756e7420666f7220616e6f74686572206163636f756e74",
+ "id": 2771,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "43296:72:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_763245df8eb4a3177de2f6c2cbb72ad869f273e4324bacac36058cc4f16c4d24",
+ "typeString": "literal_string \"Cannot re-authorize address or locked gold account for another account\""
+ },
+ "value": "Cannot re-authorize address or locked gold account for another account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_763245df8eb4a3177de2f6c2cbb72ad869f273e4324bacac36058cc4f16c4d24",
+ "typeString": "literal_string \"Cannot re-authorize address or locked gold account for another account\""
+ }
+ ],
+ "id": 2761,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "43183:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 2772,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "43183:191:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 2773,
+ "nodeType": "ExpressionStatement",
+ "src": "43183:191:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2779,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2774,
+ "name": "authorizedBy",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 123,
+ "src": "43381:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ }
+ },
+ "id": 2776,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2775,
+ "name": "authorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2750,
+ "src": "43394:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "43381:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2777,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "43408:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 2778,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "43408:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "43381:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 2780,
+ "nodeType": "ExpressionStatement",
+ "src": "43381:37:1"
+ }
+ ]
+ },
+ "documentation": "@notice Authorizes an address to `msg.sender`'s account\n@param authorized The address to authorize.\n@dev Fails if the address is already authorized for another account or is an account itself.",
+ "id": 2782,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "authorize",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2751,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2750,
+ "name": "authorized",
+ "nodeType": "VariableDeclaration",
+ "scope": 2782,
+ "src": "43094:18:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2749,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "43094:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "43093:20:1"
+ },
+ "returnParameters": {
+ "id": 2752,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "43122:0:1"
+ },
+ "scope": 2783,
+ "src": "43075:348:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "private"
+ }
+ ],
+ "scope": 2784,
+ "src": "445:42980:1"
+ }
+ ],
+ "src": "0:43426:1"
+ },
+ "legacyAST": {
+ "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Accounts.sol",
+ "exportedSymbols": {
+ "Accounts": [
+ 2783
+ ]
+ },
+ "id": 2784,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 58,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".13"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:1"
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "id": 59,
+ "nodeType": "ImportDirective",
+ "scope": 2784,
+ "sourceUnit": 44541,
+ "src": "26:59:1",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "id": 60,
+ "nodeType": "ImportDirective",
+ "scope": 2784,
+ "sourceUnit": 44659,
+ "src": "86:63:1",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/interfaces/IAccounts.sol",
+ "file": "./interfaces/IAccounts.sol",
+ "id": 61,
+ "nodeType": "ImportDirective",
+ "scope": 2784,
+ "sourceUnit": 9341,
+ "src": "151:36:1",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/FixidityLib.sol",
+ "file": "../common/FixidityLib.sol",
+ "id": 62,
+ "nodeType": "ImportDirective",
+ "scope": 2784,
+ "sourceUnit": 3611,
+ "src": "189:35:1",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Initializable.sol",
+ "file": "../common/Initializable.sol",
+ "id": 63,
+ "nodeType": "ImportDirective",
+ "scope": 2784,
+ "sourceUnit": 4705,
+ "src": "225:37:1",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/interfaces/ICeloVersionedContract.sol",
+ "file": "../common/interfaces/ICeloVersionedContract.sol",
+ "id": 64,
+ "nodeType": "ImportDirective",
+ "scope": 2784,
+ "sourceUnit": 9384,
+ "src": "263:57:1",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/Signatures.sol",
+ "file": "../common/Signatures.sol",
+ "id": 65,
+ "nodeType": "ImportDirective",
+ "scope": 2784,
+ "sourceUnit": 7220,
+ "src": "321:34:1",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/UsingRegistry.sol",
+ "file": "../common/UsingRegistry.sol",
+ "id": 66,
+ "nodeType": "ImportDirective",
+ "scope": 2784,
+ "sourceUnit": 8616,
+ "src": "356:37:1",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/isabellewei/celo/celo-monorepo/packages/protocol/contracts/common/libraries/ReentrancyGuard.sol",
+ "file": "../common/libraries/ReentrancyGuard.sol",
+ "id": 67,
+ "nodeType": "ImportDirective",
+ "scope": 2784,
+ "sourceUnit": 9762,
+ "src": "394:49:1",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "baseContracts": [
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 68,
+ "name": "IAccounts",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 9340,
+ "src": "468:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IAccounts_$9340",
+ "typeString": "contract IAccounts"
+ }
+ },
+ "id": 69,
+ "nodeType": "InheritanceSpecifier",
+ "src": "468:9:1"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 70,
+ "name": "ICeloVersionedContract",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 9383,
+ "src": "481:22:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_ICeloVersionedContract_$9383",
+ "typeString": "contract ICeloVersionedContract"
+ }
+ },
+ "id": 71,
+ "nodeType": "InheritanceSpecifier",
+ "src": "481:22:1"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 72,
+ "name": "Ownable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 44658,
+ "src": "507:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Ownable_$44658",
+ "typeString": "contract Ownable"
+ }
+ },
+ "id": 73,
+ "nodeType": "InheritanceSpecifier",
+ "src": "507:7:1"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 74,
+ "name": "ReentrancyGuard",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 9761,
+ "src": "518:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_ReentrancyGuard_$9761",
+ "typeString": "contract ReentrancyGuard"
+ }
+ },
+ "id": 75,
+ "nodeType": "InheritanceSpecifier",
+ "src": "518:15:1"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 76,
+ "name": "Initializable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 4704,
+ "src": "537:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Initializable_$4704",
+ "typeString": "contract Initializable"
+ }
+ },
+ "id": 77,
+ "nodeType": "InheritanceSpecifier",
+ "src": "537:13:1"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 78,
+ "name": "UsingRegistry",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 8615,
+ "src": "554:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_UsingRegistry_$8615",
+ "typeString": "contract UsingRegistry"
+ }
+ },
+ "id": 79,
+ "nodeType": "InheritanceSpecifier",
+ "src": "554:13:1"
+ }
+ ],
+ "contractDependencies": [
+ 4704,
+ 8615,
+ 9340,
+ 9383,
+ 9761,
+ 44203,
+ 44658
+ ],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "id": 2783,
+ "linearizedBaseContracts": [
+ 2783,
+ 8615,
+ 4704,
+ 9761,
+ 44658,
+ 44203,
+ 9383,
+ 9340
+ ],
+ "name": "Accounts",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "id": 82,
+ "libraryName": {
+ "contractScope": null,
+ "id": 80,
+ "name": "FixidityLib",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3610,
+ "src": "578:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_FixidityLib_$3610",
+ "typeString": "library FixidityLib"
+ }
+ },
+ "nodeType": "UsingForDirective",
+ "src": "572:43:1",
+ "typeName": {
+ "contractScope": null,
+ "id": 81,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "594:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ }
+ },
+ {
+ "id": 85,
+ "libraryName": {
+ "contractScope": null,
+ "id": 83,
+ "name": "SafeMath",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 44540,
+ "src": "624:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_SafeMath_$44540",
+ "typeString": "library SafeMath"
+ }
+ },
+ "nodeType": "UsingForDirective",
+ "src": "618:27:1",
+ "typeName": {
+ "id": 84,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "637:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ },
+ {
+ "canonicalName": "Accounts.Signers",
+ "id": 92,
+ "members": [
+ {
+ "constant": false,
+ "id": 87,
+ "name": "vote",
+ "nodeType": "VariableDeclaration",
+ "scope": 92,
+ "src": "871:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 86,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "871:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 89,
+ "name": "validator",
+ "nodeType": "VariableDeclaration",
+ "scope": 92,
+ "src": "1249:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 88,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1249:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 91,
+ "name": "attestation",
+ "nodeType": "VariableDeclaration",
+ "scope": 92,
+ "src": "1389:19:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 90,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1389:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "name": "Signers",
+ "nodeType": "StructDefinition",
+ "scope": 2783,
+ "src": "649:764:1",
+ "visibility": "public"
+ },
+ {
+ "canonicalName": "Accounts.SignerAuthorization",
+ "id": 97,
+ "members": [
+ {
+ "constant": false,
+ "id": 94,
+ "name": "started",
+ "nodeType": "VariableDeclaration",
+ "scope": 97,
+ "src": "1450:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 93,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "1450:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 96,
+ "name": "completed",
+ "nodeType": "VariableDeclaration",
+ "scope": 97,
+ "src": "1468:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 95,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "1468:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "name": "SignerAuthorization",
+ "nodeType": "StructDefinition",
+ "scope": 2783,
+ "src": "1417:70:1",
+ "visibility": "public"
+ },
+ {
+ "canonicalName": "Accounts.Account",
+ "id": 110,
+ "members": [
+ {
+ "constant": false,
+ "id": 99,
+ "name": "exists",
+ "nodeType": "VariableDeclaration",
+ "scope": 110,
+ "src": "1512:11:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 98,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "1512:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 101,
+ "name": "signers",
+ "nodeType": "VariableDeclaration",
+ "scope": 110,
+ "src": "1759:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage_ptr",
+ "typeString": "struct Accounts.Signers"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 100,
+ "name": "Signers",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 92,
+ "src": "1759:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage_ptr",
+ "typeString": "struct Accounts.Signers"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 103,
+ "name": "walletAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 110,
+ "src": "1970:21:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 102,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1970:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 105,
+ "name": "name",
+ "nodeType": "VariableDeclaration",
+ "scope": 110,
+ "src": "2058:11:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 104,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "2058:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 107,
+ "name": "dataEncryptionKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 110,
+ "src": "2153:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 106,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "2153:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 109,
+ "name": "metadataURL",
+ "nodeType": "VariableDeclaration",
+ "scope": 110,
+ "src": "2245:18:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 108,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "2245:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "name": "Account",
+ "nodeType": "StructDefinition",
+ "scope": 2783,
+ "src": "1491:777:1",
+ "visibility": "public"
+ },
+ {
+ "canonicalName": "Accounts.PaymentDelegation",
+ "id": 115,
+ "members": [
+ {
+ "constant": false,
+ "id": 112,
+ "name": "beneficiary",
+ "nodeType": "VariableDeclaration",
+ "scope": 115,
+ "src": "2372:19:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 111,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2372:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 114,
+ "name": "fraction",
+ "nodeType": "VariableDeclaration",
+ "scope": 115,
+ "src": "2454:29:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 113,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "2454:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "name": "PaymentDelegation",
+ "nodeType": "StructDefinition",
+ "scope": 2783,
+ "src": "2272:216:1",
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 119,
+ "name": "accounts",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "2492:45:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account)"
+ },
+ "typeName": {
+ "id": 118,
+ "keyType": {
+ "id": 116,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2500:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "2492:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account)"
+ },
+ "valueType": {
+ "contractScope": null,
+ "id": 117,
+ "name": "Account",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 110,
+ "src": "2511:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 123,
+ "name": "authorizedBy",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "2618:47:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ },
+ "typeName": {
+ "id": 122,
+ "keyType": {
+ "id": 120,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2626:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "2618:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ },
+ "valueType": {
+ "id": 121,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2637:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 129,
+ "name": "defaultSigners",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "2749:62:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => address))"
+ },
+ "typeName": {
+ "id": 128,
+ "keyType": {
+ "id": 124,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2757:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "2749:47:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => address))"
+ },
+ "valueType": {
+ "id": 127,
+ "keyType": {
+ "id": 125,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "2776:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "2768:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ },
+ "valueType": {
+ "id": 126,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2787:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 137,
+ "name": "signerAuthorizations",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "2915:100:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization)))"
+ },
+ "typeName": {
+ "id": 136,
+ "keyType": {
+ "id": 130,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2923:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "2915:79:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization)))"
+ },
+ "valueType": {
+ "id": 135,
+ "keyType": {
+ "id": 131,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "2942:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "2934:59:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization))"
+ },
+ "valueType": {
+ "id": 134,
+ "keyType": {
+ "id": 132,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2961:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "2953:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$",
+ "typeString": "mapping(address => struct Accounts.SignerAuthorization)"
+ },
+ "valueType": {
+ "contractScope": null,
+ "id": 133,
+ "name": "SignerAuthorization",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 97,
+ "src": "2972:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage_ptr",
+ "typeString": "struct Accounts.SignerAuthorization"
+ }
+ }
+ }
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": true,
+ "id": 142,
+ "name": "EIP712_AUTHORIZE_SIGNER_TYPEHASH",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "3020:140:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 138,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "3020:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "417574686f72697a655369676e65722861646472657373206163636f756e742c61646472657373207369676e65722c6279746573333220726f6c6529",
+ "id": 140,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3094:62:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_5bf3bab35849faac4d82d6621698a31fd087c25ee92f91169effbbf83ce7579b",
+ "typeString": "literal_string \"AuthorizeSigner(address account,address signer,bytes32 role)\""
+ },
+ "value": "AuthorizeSigner(address account,address signer,bytes32 role)"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_5bf3bab35849faac4d82d6621698a31fd087c25ee92f91169effbbf83ce7579b",
+ "typeString": "literal_string \"AuthorizeSigner(address account,address signer,bytes32 role)\""
+ }
+ ],
+ "id": 139,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45790,
+ "src": "3079:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 141,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3079:81:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 144,
+ "name": "eip712DomainSeparator",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "3164:36:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 143,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "3164:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 149,
+ "name": "offchainStorageRoots",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "3268:55:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes[])"
+ },
+ "typeName": {
+ "id": 148,
+ "keyType": {
+ "id": 145,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3276:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "3268:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes[])"
+ },
+ "valueType": {
+ "baseType": {
+ "id": 146,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "3287:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "id": 147,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "3287:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
+ "typeString": "bytes[]"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 153,
+ "name": "paymentDelegations",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "3396:65:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PaymentDelegation_$115_storage_$",
+ "typeString": "mapping(address => struct Accounts.PaymentDelegation)"
+ },
+ "typeName": {
+ "id": 152,
+ "keyType": {
+ "id": 150,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3404:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "3396:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PaymentDelegation_$115_storage_$",
+ "typeString": "mapping(address => struct Accounts.PaymentDelegation)"
+ },
+ "valueType": {
+ "contractScope": null,
+ "id": 151,
+ "name": "PaymentDelegation",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 115,
+ "src": "3415:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage_ptr",
+ "typeString": "struct Accounts.PaymentDelegation"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": true,
+ "id": 161,
+ "name": "ValidatorSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "3466:89:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 154,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "3466:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "63656c6f2e6f72672f636f72652f76616c696461746f72",
+ "id": 158,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3528:25:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_cfa6977d04fbed3f894cec9a54aa496d116791adfe193569ec72e733afe273c2",
+ "typeString": "literal_string \"celo.org/core/validator\""
+ },
+ "value": "celo.org/core/validator"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_cfa6977d04fbed3f894cec9a54aa496d116791adfe193569ec72e733afe273c2",
+ "typeString": "literal_string \"celo.org/core/validator\""
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 156,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45783,
+ "src": "3511:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 157,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encodePacked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3511:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 159,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3511:43:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 155,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45790,
+ "src": "3501:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 160,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3501:54:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": true,
+ "id": 169,
+ "name": "AttestationSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "3559:93:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 162,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "3559:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "63656c6f2e6f72672f636f72652f6174746573746174696f6e",
+ "id": 166,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3623:27:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_d844908d9302b59a312710d758a0705fac4f3b2753d35d743cb3490eb447ebf5",
+ "typeString": "literal_string \"celo.org/core/attestation\""
+ },
+ "value": "celo.org/core/attestation"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_d844908d9302b59a312710d758a0705fac4f3b2753d35d743cb3490eb447ebf5",
+ "typeString": "literal_string \"celo.org/core/attestation\""
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 164,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45783,
+ "src": "3606:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 165,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encodePacked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3606:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 167,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3606:45:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 163,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45790,
+ "src": "3596:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 168,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3596:56:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": true,
+ "id": 177,
+ "name": "VoteSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 2783,
+ "src": "3656:79:1",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 170,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "3656:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "63656c6f2e6f72672f636f72652f766f7465",
+ "id": 174,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3713:20:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_122641f1e4da2b60838cd4e7b658175836d790a6fa6868077a48118a5f2604cf",
+ "typeString": "literal_string \"celo.org/core/vote\""
+ },
+ "value": "celo.org/core/vote"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_122641f1e4da2b60838cd4e7b658175836d790a6fa6868077a48118a5f2604cf",
+ "typeString": "literal_string \"celo.org/core/vote\""
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 172,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45783,
+ "src": "3696:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 173,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encodePacked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3696:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 175,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3696:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 171,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45790,
+ "src": "3686:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 176,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3686:49:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 183,
+ "name": "AttestationSignerAuthorized",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 182,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 179,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 183,
+ "src": "3774:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 178,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3774:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 181,
+ "indexed": false,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 183,
+ "src": "3799:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 180,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3799:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3773:41:1"
+ },
+ "src": "3740:75:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 189,
+ "name": "VoteSignerAuthorized",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 188,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 185,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 189,
+ "src": "3845:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 184,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3845:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 187,
+ "indexed": false,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 189,
+ "src": "3870:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 186,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3870:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3844:41:1"
+ },
+ "src": "3818:68:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 195,
+ "name": "ValidatorSignerAuthorized",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 194,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 191,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 195,
+ "src": "3921:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 190,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3921:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 193,
+ "indexed": false,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 195,
+ "src": "3946:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 192,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3946:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3920:41:1"
+ },
+ "src": "3889:73:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 203,
+ "name": "SignerAuthorized",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 202,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 197,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 203,
+ "src": "3988:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 196,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3988:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 199,
+ "indexed": false,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 203,
+ "src": "4013:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 198,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4013:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 201,
+ "indexed": true,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 203,
+ "src": "4029:20:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 200,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4029:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3987:63:1"
+ },
+ "src": "3965:86:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 211,
+ "name": "SignerAuthorizationStarted",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 210,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 205,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 211,
+ "src": "4087:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 204,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4087:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 207,
+ "indexed": false,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 211,
+ "src": "4112:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 206,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4112:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 209,
+ "indexed": true,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 211,
+ "src": "4128:20:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 208,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4128:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4086:63:1"
+ },
+ "src": "4054:96:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 219,
+ "name": "SignerAuthorizationCompleted",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 218,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 213,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 219,
+ "src": "4188:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 212,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4188:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 215,
+ "indexed": false,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 219,
+ "src": "4213:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 214,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4213:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 217,
+ "indexed": true,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 219,
+ "src": "4229:20:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 216,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4229:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4187:63:1"
+ },
+ "src": "4153:98:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 225,
+ "name": "AttestationSignerRemoved",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 224,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 221,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 225,
+ "src": "4285:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 220,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4285:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 223,
+ "indexed": false,
+ "name": "oldSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 225,
+ "src": "4310:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 222,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4310:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4284:44:1"
+ },
+ "src": "4254:75:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 231,
+ "name": "VoteSignerRemoved",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 230,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 227,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 231,
+ "src": "4356:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 226,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4356:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 229,
+ "indexed": false,
+ "name": "oldSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 231,
+ "src": "4381:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 228,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4381:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4355:44:1"
+ },
+ "src": "4332:68:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 237,
+ "name": "ValidatorSignerRemoved",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 236,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 233,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 237,
+ "src": "4432:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 232,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4432:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 235,
+ "indexed": false,
+ "name": "oldSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 237,
+ "src": "4457:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 234,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4457:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4431:44:1"
+ },
+ "src": "4403:73:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 245,
+ "name": "IndexedSignerSet",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 244,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 239,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 245,
+ "src": "4502:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 238,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4502:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 241,
+ "indexed": false,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 245,
+ "src": "4527:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 240,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4527:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 243,
+ "indexed": false,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 245,
+ "src": "4543:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 242,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4543:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4501:55:1"
+ },
+ "src": "4479:78:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 253,
+ "name": "IndexedSignerRemoved",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 252,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 247,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 253,
+ "src": "4587:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 246,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4587:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 249,
+ "indexed": false,
+ "name": "oldSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 253,
+ "src": "4612:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 248,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4612:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 251,
+ "indexed": false,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 253,
+ "src": "4631:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 250,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4631:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4586:58:1"
+ },
+ "src": "4560:85:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 261,
+ "name": "DefaultSignerSet",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 260,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 255,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 261,
+ "src": "4671:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 254,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4671:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 257,
+ "indexed": false,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 261,
+ "src": "4696:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 256,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4696:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 259,
+ "indexed": false,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 261,
+ "src": "4712:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 258,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4712:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4670:55:1"
+ },
+ "src": "4648:78:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 269,
+ "name": "DefaultSignerRemoved",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 268,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 263,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 269,
+ "src": "4756:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 262,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4756:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 265,
+ "indexed": false,
+ "name": "oldSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 269,
+ "src": "4781:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 264,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4781:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 267,
+ "indexed": false,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 269,
+ "src": "4800:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 266,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4800:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4755:58:1"
+ },
+ "src": "4729:85:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 277,
+ "name": "LegacySignerSet",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 276,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 271,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 277,
+ "src": "4839:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 270,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4839:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 273,
+ "indexed": false,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 277,
+ "src": "4864:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 272,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4864:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 275,
+ "indexed": false,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 277,
+ "src": "4880:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 274,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4880:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4838:55:1"
+ },
+ "src": "4817:77:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 285,
+ "name": "LegacySignerRemoved",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 284,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 279,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 285,
+ "src": "4923:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 278,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4923:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 281,
+ "indexed": false,
+ "name": "oldSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 285,
+ "src": "4948:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 280,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4948:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 283,
+ "indexed": false,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 285,
+ "src": "4967:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 282,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4967:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4922:58:1"
+ },
+ "src": "4897:84:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 293,
+ "name": "SignerRemoved",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 292,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 287,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 293,
+ "src": "5004:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 286,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5004:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 289,
+ "indexed": false,
+ "name": "oldSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 293,
+ "src": "5029:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 288,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5029:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 291,
+ "indexed": true,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 293,
+ "src": "5048:20:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 290,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "5048:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5003:66:1"
+ },
+ "src": "4984:86:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 299,
+ "name": "AccountDataEncryptionKeySet",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 298,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 295,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 299,
+ "src": "5107:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 294,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5107:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 297,
+ "indexed": false,
+ "name": "dataEncryptionKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 299,
+ "src": "5132:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 296,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5132:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5106:50:1"
+ },
+ "src": "5073:84:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 305,
+ "name": "AccountNameSet",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 304,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 301,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 305,
+ "src": "5181:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 300,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5181:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 303,
+ "indexed": false,
+ "name": "name",
+ "nodeType": "VariableDeclaration",
+ "scope": 305,
+ "src": "5206:11:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 302,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "5206:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5180:38:1"
+ },
+ "src": "5160:59:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 311,
+ "name": "AccountMetadataURLSet",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 310,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 307,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 311,
+ "src": "5250:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 306,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5250:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 309,
+ "indexed": false,
+ "name": "metadataURL",
+ "nodeType": "VariableDeclaration",
+ "scope": 311,
+ "src": "5275:18:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 308,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "5275:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5249:45:1"
+ },
+ "src": "5222:73:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 317,
+ "name": "AccountWalletAddressSet",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 316,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 313,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 317,
+ "src": "5328:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 312,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5328:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 315,
+ "indexed": false,
+ "name": "walletAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 317,
+ "src": "5353:21:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 314,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5353:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5327:48:1"
+ },
+ "src": "5298:78:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 321,
+ "name": "AccountCreated",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 320,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 319,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 321,
+ "src": "5400:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 318,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5400:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5399:25:1"
+ },
+ "src": "5379:46:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 327,
+ "name": "OffchainStorageRootAdded",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 326,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 323,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 327,
+ "src": "5459:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 322,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5459:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 325,
+ "indexed": false,
+ "name": "url",
+ "nodeType": "VariableDeclaration",
+ "scope": 327,
+ "src": "5484:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 324,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5484:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5458:36:1"
+ },
+ "src": "5428:67:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 335,
+ "name": "OffchainStorageRootRemoved",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 334,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 329,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 335,
+ "src": "5531:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 328,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5531:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 331,
+ "indexed": false,
+ "name": "url",
+ "nodeType": "VariableDeclaration",
+ "scope": 335,
+ "src": "5556:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 330,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "5556:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 333,
+ "indexed": false,
+ "name": "index",
+ "nodeType": "VariableDeclaration",
+ "scope": 335,
+ "src": "5567:13:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 332,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "5567:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5530:51:1"
+ },
+ "src": "5498:84:1"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 341,
+ "name": "PaymentDelegationSet",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 340,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 337,
+ "indexed": true,
+ "name": "beneficiary",
+ "nodeType": "VariableDeclaration",
+ "scope": 341,
+ "src": "5612:27:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 336,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5612:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 339,
+ "indexed": false,
+ "name": "fraction",
+ "nodeType": "VariableDeclaration",
+ "scope": 341,
+ "src": "5641:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 338,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "5641:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5611:47:1"
+ },
+ "src": "5585:74:1"
+ },
+ {
+ "body": {
+ "id": 349,
+ "nodeType": "Block",
+ "src": "5858:2:1",
+ "statements": []
+ },
+ "documentation": "@notice Sets initialized == true on implementation contracts\n@param test Set to true to skip implementation initialization",
+ "id": 350,
+ "implemented": true,
+ "kind": "constructor",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 346,
+ "name": "test",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 343,
+ "src": "5852:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 347,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 345,
+ "name": "Initializable",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 4704,
+ "src": "5838:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Initializable_$4704_$",
+ "typeString": "type(contract Initializable)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "5838:19:1"
+ }
+ ],
+ "name": "",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 344,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 343,
+ "name": "test",
+ "nodeType": "VariableDeclaration",
+ "scope": 350,
+ "src": "5820:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 342,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "5820:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5819:11:1"
+ },
+ "returnParameters": {
+ "id": 348,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5858:0:1"
+ },
+ "scope": 2783,
+ "src": "5808:52:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 367,
+ "nodeType": "Block",
+ "src": "6121:30:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 361,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6135:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 362,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6138:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "34",
+ "id": 363,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6141:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_4_by_1",
+ "typeString": "int_const 4"
+ },
+ "value": "4"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 364,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6144:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "id": 365,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "6134:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_rational_1_by_1_$_t_rational_1_by_1_$_t_rational_4_by_1_$_t_rational_0_by_1_$",
+ "typeString": "tuple(int_const 1,int_const 1,int_const 4,int_const 0)"
+ }
+ },
+ "functionReturnParameters": 360,
+ "id": 366,
+ "nodeType": "Return",
+ "src": "6127:19:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the storage, major, minor, and patch version of the contract.\n@return The storage, major, minor, and patch version of the contract.",
+ "id": 368,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getVersionNumber",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 351,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6059:2:1"
+ },
+ "returnParameters": {
+ "id": 360,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 353,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 368,
+ "src": "6085:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 352,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "6085:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 355,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 368,
+ "src": "6094:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 354,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "6094:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 357,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 368,
+ "src": "6103:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 356,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "6103:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 359,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 368,
+ "src": "6112:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 358,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "6112:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6084:36:1"
+ },
+ "scope": 2783,
+ "src": "6034:117:1",
+ "stateMutability": "pure",
+ "superFunction": 9382,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 387,
+ "nodeType": "Block",
+ "src": "6406:107:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 376,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "6431:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 377,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "6431:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 375,
+ "name": "_transferOwnership",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44657,
+ "src": "6412:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 378,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6412:30:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 379,
+ "nodeType": "ExpressionStatement",
+ "src": "6412:30:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 381,
+ "name": "registryAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 370,
+ "src": "6460:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 380,
+ "name": "setRegistry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8432,
+ "src": "6448:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 382,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6448:28:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 383,
+ "nodeType": "ExpressionStatement",
+ "src": "6448:28:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 384,
+ "name": "setEip712DomainSeparator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 419,
+ "src": "6482:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
+ "typeString": "function ()"
+ }
+ },
+ "id": 385,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6482:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 386,
+ "nodeType": "ExpressionStatement",
+ "src": "6482:26:1"
+ }
+ ]
+ },
+ "documentation": "@notice Used in place of the constructor to allow the contract to be upgradable via proxy.\n@param registryAddress The address of the registry core smart contract.",
+ "id": 388,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 373,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 372,
+ "name": "initializer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 4703,
+ "src": "6394:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "6394:11:1"
+ }
+ ],
+ "name": "initialize",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 371,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 370,
+ "name": "registryAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 388,
+ "src": "6360:23:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 369,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "6360:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6359:25:1"
+ },
+ "returnParameters": {
+ "id": 374,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6406:0:1"
+ },
+ "scope": 2783,
+ "src": "6340:173:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 418,
+ "nodeType": "Block",
+ "src": "6653:384:1",
+ "statements": [
+ {
+ "assignments": [
+ 392
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 392,
+ "name": "chainId",
+ "nodeType": "VariableDeclaration",
+ "scope": 418,
+ "src": "6659:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 391,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "6659:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 393,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "6659:15:1"
+ },
+ {
+ "externalReferences": [
+ {
+ "chainId": {
+ "declaration": 392,
+ "isOffset": false,
+ "isSlot": false,
+ "src": "6697:7:1",
+ "valueSize": 1
+ }
+ }
+ ],
+ "id": 394,
+ "nodeType": "InlineAssembly",
+ "operations": "{ chainId := chainid() }",
+ "src": "6680:41:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 416,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 395,
+ "name": "eip712DomainSeparator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 144,
+ "src": "6727:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
+ "id": 400,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6809:84:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
+ "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
+ },
+ "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
+ "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
+ }
+ ],
+ "id": 399,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45790,
+ "src": "6788:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 401,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6788:115:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "43656c6f20436f726520436f6e747261637473",
+ "id": 404,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6929:21:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_a79434944f2de3a08fff0c310d6c2df5d23248a28b9cc9797f834d872d9edf3c",
+ "typeString": "literal_string \"Celo Core Contracts\""
+ },
+ "value": "Celo Core Contracts"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_a79434944f2de3a08fff0c310d6c2df5d23248a28b9cc9797f834d872d9edf3c",
+ "typeString": "literal_string \"Celo Core Contracts\""
+ }
+ ],
+ "id": 403,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "6923:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+ "typeString": "type(bytes storage pointer)"
+ },
+ "typeName": "bytes"
+ },
+ "id": 405,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6923:28:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 402,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45790,
+ "src": "6913:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 406,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6913:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "312e30",
+ "id": 408,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6972:5:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_e6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3",
+ "typeString": "literal_string \"1.0\""
+ },
+ "value": "1.0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_e6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3",
+ "typeString": "literal_string \"1.0\""
+ }
+ ],
+ "id": 407,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45790,
+ "src": "6962:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 409,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6962:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 410,
+ "name": "chainId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 392,
+ "src": "6988:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 412,
+ "name": "this",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45860,
+ "src": "7013:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Accounts_$2783",
+ "typeString": "contract Accounts"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_contract$_Accounts_$2783",
+ "typeString": "contract Accounts"
+ }
+ ],
+ "id": 411,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "7005:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 413,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7005:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 397,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45783,
+ "src": "6768:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 398,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encode",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "6768:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 414,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6768:258:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 396,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45790,
+ "src": "6751:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 415,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6751:281:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "6727:305:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "id": 417,
+ "nodeType": "ExpressionStatement",
+ "src": "6727:305:1"
+ }
+ ]
+ },
+ "documentation": "@notice Sets the EIP712 domain separator for the Celo Accounts abstraction.",
+ "id": 419,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "setEip712DomainSeparator",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 389,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6643:2:1"
+ },
+ "returnParameters": {
+ "id": 390,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6653:0:1"
+ },
+ "scope": 2783,
+ "src": "6610:427:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 459,
+ "nodeType": "Block",
+ "src": "7830:185:1",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "id": 438,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "!",
+ "prefix": true,
+ "src": "7840:22:1",
+ "subExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 435,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "7851:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 436,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "7851:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 434,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "7841:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 437,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7841:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 443,
+ "nodeType": "IfStatement",
+ "src": "7836:58:1",
+ "trueBody": {
+ "id": 442,
+ "nodeType": "Block",
+ "src": "7864:30:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 439,
+ "name": "createAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 499,
+ "src": "7872:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_bool_$",
+ "typeString": "function () returns (bool)"
+ }
+ },
+ "id": 440,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7872:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 441,
+ "nodeType": "ExpressionStatement",
+ "src": "7872:15:1"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 445,
+ "name": "name",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 421,
+ "src": "7907:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ ],
+ "id": 444,
+ "name": "setName",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 532,
+ "src": "7899:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (string memory)"
+ }
+ },
+ "id": 446,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7899:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 447,
+ "nodeType": "ExpressionStatement",
+ "src": "7899:13:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 449,
+ "name": "dataEncryptionKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 423,
+ "src": "7946:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ ],
+ "id": 448,
+ "name": "setAccountDataEncryptionKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 636,
+ "src": "7918:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
+ "typeString": "function (bytes memory)"
+ }
+ },
+ "id": 450,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7918:46:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 451,
+ "nodeType": "ExpressionStatement",
+ "src": "7918:46:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 453,
+ "name": "walletAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 425,
+ "src": "7987:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 454,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 427,
+ "src": "8002:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 455,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 429,
+ "src": "8005:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 456,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 431,
+ "src": "8008:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 452,
+ "name": "setWalletAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 603,
+ "src": "7970:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,uint8,bytes32,bytes32)"
+ }
+ },
+ "id": 457,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7970:40:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 458,
+ "nodeType": "ExpressionStatement",
+ "src": "7970:40:1"
+ }
+ ]
+ },
+ "documentation": "@notice Convenience Setter for the dataEncryptionKey and wallet address for an account\n@param name A string to set as the name of the account\n@param dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed.\n@param walletAddress The wallet address to set for the account\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s signature on `msg.sender` (unless the wallet address\n is 0x0 or msg.sender).",
+ "id": 460,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "setAccount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 432,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 421,
+ "name": "name",
+ "nodeType": "VariableDeclaration",
+ "scope": 460,
+ "src": "7688:20:1",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 420,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "7688:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 423,
+ "name": "dataEncryptionKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 460,
+ "src": "7714:32:1",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 422,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "7714:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 425,
+ "name": "walletAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 460,
+ "src": "7752:21:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 424,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "7752:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 427,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 460,
+ "src": "7779:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 426,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "7779:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 429,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 460,
+ "src": "7792:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 428,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "7792:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 431,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 460,
+ "src": "7807:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 430,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "7807:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "7682:138:1"
+ },
+ "returnParameters": {
+ "id": 433,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "7830:0:1"
+ },
+ "scope": 2783,
+ "src": "7663:352:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9216,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 498,
+ "nodeType": "Block",
+ "src": "8160:232:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 474,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 467,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "8187:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 468,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8187:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 466,
+ "name": "isNotAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2579,
+ "src": "8174:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 469,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8174:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 471,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "8224:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 472,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8224:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 470,
+ "name": "isNotAuthorizedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2613,
+ "src": "8202:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 473,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8202:33:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "8174:61:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4163636f756e7420657869737473",
+ "id": 475,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8237:16:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_2eee228586fd7c999f38cbe4bd1109872cc8e0a2c36be861cdc648b9da9d2870",
+ "typeString": "literal_string \"Account exists\""
+ },
+ "value": "Account exists"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_2eee228586fd7c999f38cbe4bd1109872cc8e0a2c36be861cdc648b9da9d2870",
+ "typeString": "literal_string \"Account exists\""
+ }
+ ],
+ "id": 465,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "8166:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 476,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8166:88:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 477,
+ "nodeType": "ExpressionStatement",
+ "src": "8166:88:1"
+ },
+ {
+ "assignments": [
+ 479
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 479,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 498,
+ "src": "8260:23:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 478,
+ "name": "Account",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 110,
+ "src": "8260:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 484,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 480,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "8286:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 483,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 481,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "8295:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 482,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8295:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "8286:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "8260:46:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 489,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 485,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 479,
+ "src": "8312:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 487,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "exists",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 99,
+ "src": "8312:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 488,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8329:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "src": "8312:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 490,
+ "nodeType": "ExpressionStatement",
+ "src": "8312:21:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 492,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "8359:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 493,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8359:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 491,
+ "name": "AccountCreated",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 321,
+ "src": "8344:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 494,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8344:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 495,
+ "nodeType": "EmitStatement",
+ "src": "8339:31:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 496,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8383:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 464,
+ "id": 497,
+ "nodeType": "Return",
+ "src": "8376:11:1"
+ }
+ ]
+ },
+ "documentation": "@notice Creates an account.\n@return True if account creation succeeded.",
+ "id": 499,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "createAccount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 461,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "8135:2:1"
+ },
+ "returnParameters": {
+ "id": 464,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 463,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 499,
+ "src": "8154:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 462,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "8154:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "8153:6:1"
+ },
+ "scope": 2783,
+ "src": "8113:279:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9323,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 531,
+ "nodeType": "Block",
+ "src": "8534:180:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 506,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "8558:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 507,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8558:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 505,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "8548:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 508,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8548:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "556e6b6e6f776e206163636f756e74",
+ "id": 509,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8571:17:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ },
+ "value": "Unknown account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ }
+ ],
+ "id": 504,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "8540:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 510,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8540:49:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 511,
+ "nodeType": "ExpressionStatement",
+ "src": "8540:49:1"
+ },
+ {
+ "assignments": [
+ 513
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 513,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 531,
+ "src": "8595:23:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 512,
+ "name": "Account",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 110,
+ "src": "8595:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 518,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 514,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "8621:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 517,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 515,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "8630:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 516,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8630:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "8621:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "8595:46:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 523,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 519,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 513,
+ "src": "8647:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 521,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "name",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 105,
+ "src": "8647:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 522,
+ "name": "name",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 501,
+ "src": "8662:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ },
+ "src": "8647:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "id": 524,
+ "nodeType": "ExpressionStatement",
+ "src": "8647:19:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 526,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "8692:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 527,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8692:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 528,
+ "name": "name",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 501,
+ "src": "8704:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string memory"
+ }
+ ],
+ "id": 525,
+ "name": "AccountNameSet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 305,
+ "src": "8677:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (address,string memory)"
+ }
+ },
+ "id": 529,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8677:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 530,
+ "nodeType": "EmitStatement",
+ "src": "8672:37:1"
+ }
+ ]
+ },
+ "documentation": "@notice Setter for the name of an account.\n@param name The name to set.",
+ "id": 532,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "setName",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 502,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 501,
+ "name": "name",
+ "nodeType": "VariableDeclaration",
+ "scope": 532,
+ "src": "8507:18:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 500,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "8507:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "8506:20:1"
+ },
+ "returnParameters": {
+ "id": 503,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "8534:0:1"
+ },
+ "scope": 2783,
+ "src": "8490:224:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9190,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 602,
+ "nodeType": "Block",
+ "src": "9477:433:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 545,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "9501:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 546,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "9501:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 544,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "9491:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 547,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9491:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "556e6b6e6f776e206163636f756e74",
+ "id": 548,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "9514:17:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ },
+ "value": "Unknown account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ }
+ ],
+ "id": 543,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "9483:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 549,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9483:49:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 550,
+ "nodeType": "ExpressionStatement",
+ "src": "9483:49:1"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "id": 562,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "!",
+ "prefix": true,
+ "src": "9542:63:1",
+ "subExpression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 560,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 554,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 551,
+ "name": "walletAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 534,
+ "src": "9544:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 552,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "9561:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 553,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "9561:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "9544:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 559,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 555,
+ "name": "walletAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 534,
+ "src": "9575:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "307830",
+ "id": 557,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "9600:3:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0x0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 556,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "9592:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 558,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9592:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "9575:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "9544:60:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 561,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "9543:62:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 582,
+ "nodeType": "IfStatement",
+ "src": "9538:212:1",
+ "trueBody": {
+ "id": 581,
+ "nodeType": "Block",
+ "src": "9607:143:1",
+ "statements": [
+ {
+ "assignments": [
+ 564
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 564,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 581,
+ "src": "9615:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 563,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "9615:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 573,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 567,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "9662:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 568,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "9662:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 569,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 536,
+ "src": "9674:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 570,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 538,
+ "src": "9677:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 571,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 540,
+ "src": "9680:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 565,
+ "name": "Signatures",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7219,
+ "src": "9632:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Signatures_$7219_$",
+ "typeString": "type(library Signatures)"
+ }
+ },
+ "id": 566,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getSignerOfAddress",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 7127,
+ "src": "9632:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_delegatecall_pure$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,uint8,bytes32,bytes32) pure returns (address)"
+ }
+ },
+ "id": 572,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9632:50:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "9615:67:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 577,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 575,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 564,
+ "src": "9698:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 576,
+ "name": "walletAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 534,
+ "src": "9708:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "9698:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "496e76616c6964207369676e6174757265",
+ "id": 578,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "9723:19:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7",
+ "typeString": "literal_string \"Invalid signature\""
+ },
+ "value": "Invalid signature"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7",
+ "typeString": "literal_string \"Invalid signature\""
+ }
+ ],
+ "id": 574,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "9690:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 579,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9690:53:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 580,
+ "nodeType": "ExpressionStatement",
+ "src": "9690:53:1"
+ }
+ ]
+ }
+ },
+ {
+ "assignments": [
+ 584
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 584,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 602,
+ "src": "9755:23:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 583,
+ "name": "Account",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 110,
+ "src": "9755:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 589,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 585,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "9781:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 588,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 586,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "9790:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 587,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "9790:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "9781:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "9755:46:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 594,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 590,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 584,
+ "src": "9807:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 592,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "walletAddress",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 103,
+ "src": "9807:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 593,
+ "name": "walletAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 534,
+ "src": "9831:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "9807:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 595,
+ "nodeType": "ExpressionStatement",
+ "src": "9807:37:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 597,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "9879:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 598,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "9879:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 599,
+ "name": "walletAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 534,
+ "src": "9891:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 596,
+ "name": "AccountWalletAddressSet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 317,
+ "src": "9855:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 600,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9855:50:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 601,
+ "nodeType": "EmitStatement",
+ "src": "9850:55:1"
+ }
+ ]
+ },
+ "documentation": "@notice Setter for the wallet address for an account\n@param walletAddress The wallet address to set for the account\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev Wallet address can be zero. This means that the owner of the wallet\n does not want to be paid directly without interaction, and instead wants users to\ncontact them, using the data encryption key, and arrange a payment.\n@dev v, r, s constitute `signer`'s signature on `msg.sender` (unless the wallet address\n is 0x0 or msg.sender).",
+ "id": 603,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "setWalletAddress",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 541,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 534,
+ "name": "walletAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 603,
+ "src": "9416:21:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 533,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "9416:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 536,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 603,
+ "src": "9439:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 535,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "9439:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 538,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 603,
+ "src": "9448:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 537,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "9448:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 540,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 603,
+ "src": "9459:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 539,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "9459:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "9415:54:1"
+ },
+ "returnParameters": {
+ "id": 542,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "9477:0:1"
+ },
+ "scope": 2783,
+ "src": "9390:520:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9201,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 635,
+ "nodeType": "Block",
+ "src": "10158:258:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 612,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 609,
+ "name": "dataEncryptionKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 605,
+ "src": "10172:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ "id": 610,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10172:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "3333",
+ "id": 611,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10200:2:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_33_by_1",
+ "typeString": "int_const 33"
+ },
+ "value": "33"
+ },
+ "src": "10172:30:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "6461746120656e6372797074696f6e206b6579206c656e677468203c3d203332",
+ "id": 613,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10204:34:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_83637d6e55bb87335cf1c35dfdc7853de3d489b68e0f22b008d85b0ef47505aa",
+ "typeString": "literal_string \"data encryption key length <= 32\""
+ },
+ "value": "data encryption key length <= 32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_83637d6e55bb87335cf1c35dfdc7853de3d489b68e0f22b008d85b0ef47505aa",
+ "typeString": "literal_string \"data encryption key length <= 32\""
+ }
+ ],
+ "id": 608,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "10164:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 614,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10164:75:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 615,
+ "nodeType": "ExpressionStatement",
+ "src": "10164:75:1"
+ },
+ {
+ "assignments": [
+ 617
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 617,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 635,
+ "src": "10245:23:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 616,
+ "name": "Account",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 110,
+ "src": "10245:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 622,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 618,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "10271:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 621,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 619,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "10280:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 620,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10280:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "10271:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "10245:46:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 627,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 623,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 617,
+ "src": "10297:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 625,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "dataEncryptionKey",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 107,
+ "src": "10297:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 626,
+ "name": "dataEncryptionKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 605,
+ "src": "10325:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ "src": "10297:45:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "id": 628,
+ "nodeType": "ExpressionStatement",
+ "src": "10297:45:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 630,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "10381:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 631,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10381:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 632,
+ "name": "dataEncryptionKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 605,
+ "src": "10393:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 629,
+ "name": "AccountDataEncryptionKeySet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 299,
+ "src": "10353:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$",
+ "typeString": "function (address,bytes memory)"
+ }
+ },
+ "id": 633,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10353:58:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 634,
+ "nodeType": "EmitStatement",
+ "src": "10348:63:1"
+ }
+ ]
+ },
+ "documentation": "@notice Setter for the data encryption key and version.\n@param dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed.",
+ "id": 636,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "setAccountDataEncryptionKey",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 606,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 605,
+ "name": "dataEncryptionKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 636,
+ "src": "10119:30:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 604,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "10119:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "10118:32:1"
+ },
+ "returnParameters": {
+ "id": 607,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "10158:0:1"
+ },
+ "scope": 2783,
+ "src": "10082:334:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9180,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 668,
+ "nodeType": "Block",
+ "src": "10602:208:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 643,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "10626:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 644,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10626:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 642,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "10616:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 645,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10616:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "556e6b6e6f776e206163636f756e74",
+ "id": 646,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10639:17:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ },
+ "value": "Unknown account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ }
+ ],
+ "id": 641,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "10608:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 647,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10608:49:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 648,
+ "nodeType": "ExpressionStatement",
+ "src": "10608:49:1"
+ },
+ {
+ "assignments": [
+ 650
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 650,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 668,
+ "src": "10663:23:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 649,
+ "name": "Account",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 110,
+ "src": "10663:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 655,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 651,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "10689:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 654,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 652,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "10698:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 653,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10698:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "10689:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "10663:46:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 660,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 656,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 650,
+ "src": "10715:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 658,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "metadataURL",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 109,
+ "src": "10715:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 659,
+ "name": "metadataURL",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 638,
+ "src": "10737:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ },
+ "src": "10715:33:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "id": 661,
+ "nodeType": "ExpressionStatement",
+ "src": "10715:33:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 663,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "10781:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 664,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10781:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 665,
+ "name": "metadataURL",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 638,
+ "src": "10793:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ ],
+ "id": 662,
+ "name": "AccountMetadataURLSet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 311,
+ "src": "10759:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (address,string memory)"
+ }
+ },
+ "id": 666,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10759:46:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 667,
+ "nodeType": "EmitStatement",
+ "src": "10754:51:1"
+ }
+ ]
+ },
+ "documentation": "@notice Setter for the metadata of an account.\n@param metadataURL The URL to access the metadata.",
+ "id": 669,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "setMetadataURL",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 639,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 638,
+ "name": "metadataURL",
+ "nodeType": "VariableDeclaration",
+ "scope": 669,
+ "src": "10564:27:1",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 637,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "10564:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "10563:29:1"
+ },
+ "returnParameters": {
+ "id": 640,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "10602:0:1"
+ },
+ "scope": 2783,
+ "src": "10540:270:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9185,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 696,
+ "nodeType": "Block",
+ "src": "10985:160:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 676,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "11009:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 677,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11009:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 675,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "10999:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 678,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10999:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "556e6b6e6f776e206163636f756e74",
+ "id": 679,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11022:17:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ },
+ "value": "Unknown account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ }
+ ],
+ "id": 674,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "10991:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 680,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10991:49:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 681,
+ "nodeType": "ExpressionStatement",
+ "src": "10991:49:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 687,
+ "name": "url",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 671,
+ "src": "11084:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 682,
+ "name": "offchainStorageRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 149,
+ "src": "11046:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes storage ref[] storage ref)"
+ }
+ },
+ "id": 685,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 683,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "11067:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 684,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11067:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11046:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes storage ref[] storage ref"
+ }
+ },
+ "id": 686,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "push",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11046:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes_storage_$returns$_t_uint256_$",
+ "typeString": "function (bytes storage ref) returns (uint256)"
+ }
+ },
+ "id": 688,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11046:42:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 689,
+ "nodeType": "ExpressionStatement",
+ "src": "11046:42:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 691,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "11124:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 692,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11124:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 693,
+ "name": "url",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 671,
+ "src": "11136:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ ],
+ "id": 690,
+ "name": "OffchainStorageRootAdded",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 327,
+ "src": "11099:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$",
+ "typeString": "function (address,bytes memory)"
+ }
+ },
+ "id": 694,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11099:41:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 695,
+ "nodeType": "EmitStatement",
+ "src": "11094:46:1"
+ }
+ ]
+ },
+ "documentation": "@notice Adds a new CIP8 storage root.\n@param url The URL pointing to the offchain storage root.",
+ "id": 697,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "addStorageRoot",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 672,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 671,
+ "name": "url",
+ "nodeType": "VariableDeclaration",
+ "scope": 697,
+ "src": "10956:18:1",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 670,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "10956:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "10955:20:1"
+ },
+ "returnParameters": {
+ "id": 673,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "10985:0:1"
+ },
+ "scope": 2783,
+ "src": "10932:213:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 768,
+ "nodeType": "Block",
+ "src": "11553:484:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 704,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "11577:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 705,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11577:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 703,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "11567:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 706,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11567:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "556e6b6e6f776e206163636f756e74",
+ "id": 707,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11590:17:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ },
+ "value": "Unknown account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ }
+ ],
+ "id": 702,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "11559:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 708,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11559:49:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 709,
+ "nodeType": "ExpressionStatement",
+ "src": "11559:49:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 717,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 711,
+ "name": "index",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 699,
+ "src": "11622:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 712,
+ "name": "offchainStorageRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 149,
+ "src": "11630:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes storage ref[] storage ref)"
+ }
+ },
+ "id": 715,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 713,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "11651:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 714,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11651:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11630:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes storage ref[] storage ref"
+ }
+ },
+ "id": 716,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11630:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "11622:47:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "496e76616c69642073746f7261676520726f6f7420696e646578",
+ "id": 718,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11671:28:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_ec1403f002ece673f9ad0b5a942d24afca78694aa4da179ce70f04a3fe28293c",
+ "typeString": "literal_string \"Invalid storage root index\""
+ },
+ "value": "Invalid storage root index"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_ec1403f002ece673f9ad0b5a942d24afca78694aa4da179ce70f04a3fe28293c",
+ "typeString": "literal_string \"Invalid storage root index\""
+ }
+ ],
+ "id": 710,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "11614:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 719,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11614:86:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 720,
+ "nodeType": "ExpressionStatement",
+ "src": "11614:86:1"
+ },
+ {
+ "assignments": [
+ 722
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 722,
+ "name": "lastIndex",
+ "nodeType": "VariableDeclaration",
+ "scope": 768,
+ "src": "11706:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 721,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "11706:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 730,
+ "initialValue": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 729,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 723,
+ "name": "offchainStorageRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 149,
+ "src": "11726:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes storage ref[] storage ref)"
+ }
+ },
+ "id": 726,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 724,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "11747:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 725,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11747:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11726:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes storage ref[] storage ref"
+ }
+ },
+ "id": 727,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11726:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "-",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 728,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11768:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "src": "11726:43:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "11706:63:1"
+ },
+ {
+ "assignments": [
+ 732
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 732,
+ "name": "url",
+ "nodeType": "VariableDeclaration",
+ "scope": 768,
+ "src": "11775:16:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 731,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "11775:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 739,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 733,
+ "name": "offchainStorageRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 149,
+ "src": "11794:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes storage ref[] storage ref)"
+ }
+ },
+ "id": 736,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 734,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "11815:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 735,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11815:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11794:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes storage ref[] storage ref"
+ }
+ },
+ "id": 738,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 737,
+ "name": "index",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 699,
+ "src": "11827:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11794:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "11775:58:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 752,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 740,
+ "name": "offchainStorageRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 149,
+ "src": "11839:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes storage ref[] storage ref)"
+ }
+ },
+ "id": 744,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 741,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "11860:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 742,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11860:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11839:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes storage ref[] storage ref"
+ }
+ },
+ "id": 745,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 743,
+ "name": "index",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 699,
+ "src": "11872:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "11839:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 746,
+ "name": "offchainStorageRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 149,
+ "src": "11881:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes storage ref[] storage ref)"
+ }
+ },
+ "id": 749,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 747,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "11902:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 748,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11902:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11881:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes storage ref[] storage ref"
+ }
+ },
+ "id": 751,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 750,
+ "name": "lastIndex",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 722,
+ "src": "11914:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11881:43:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "src": "11839:85:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "id": 753,
+ "nodeType": "ExpressionStatement",
+ "src": "11839:85:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 759,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "--",
+ "prefix": false,
+ "src": "11930:41:1",
+ "subExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 754,
+ "name": "offchainStorageRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 149,
+ "src": "11930:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes storage ref[] storage ref)"
+ }
+ },
+ "id": 757,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 755,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "11951:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 756,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11951:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11930:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes storage ref[] storage ref"
+ }
+ },
+ "id": 758,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11930:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 760,
+ "nodeType": "ExpressionStatement",
+ "src": "11930:41:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 762,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "12009:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 763,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "12009:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 764,
+ "name": "url",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 732,
+ "src": "12021:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 765,
+ "name": "index",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 699,
+ "src": "12026:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 761,
+ "name": "OffchainStorageRootRemoved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 335,
+ "src": "11982:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
+ "typeString": "function (address,bytes memory,uint256)"
+ }
+ },
+ "id": 766,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11982:50:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 767,
+ "nodeType": "EmitStatement",
+ "src": "11977:55:1"
+ }
+ ]
+ },
+ "documentation": "@notice Removes a CIP8 storage root.\n@param index The index of the storage root to be removed in the account's\nlist of storage roots.\n@dev The order of storage roots may change after this operation (the last\nstorage root will be moved to `index`), be aware of this if removing\nmultiple storage roots at a time.",
+ "id": 769,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "removeStorageRoot",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 700,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 699,
+ "name": "index",
+ "nodeType": "VariableDeclaration",
+ "scope": 769,
+ "src": "11529:13:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 698,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "11529:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "11528:15:1"
+ },
+ "returnParameters": {
+ "id": 701,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "11553:0:1"
+ },
+ "scope": 2783,
+ "src": "11502:535:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 898,
+ "nodeType": "Block",
+ "src": "12352:730:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 781,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 771,
+ "src": "12376:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 780,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "12366:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 782,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12366:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "556e6b6e6f776e206163636f756e74",
+ "id": 783,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "12386:17:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ },
+ "value": "Unknown account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ }
+ ],
+ "id": 779,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "12358:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 784,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12358:46:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 785,
+ "nodeType": "ExpressionStatement",
+ "src": "12358:46:1"
+ },
+ {
+ "assignments": [
+ 787
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 787,
+ "name": "numberRoots",
+ "nodeType": "VariableDeclaration",
+ "scope": 898,
+ "src": "12410:19:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 786,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12410:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 792,
+ "initialValue": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 788,
+ "name": "offchainStorageRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 149,
+ "src": "12432:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes storage ref[] storage ref)"
+ }
+ },
+ "id": 790,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 789,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 771,
+ "src": "12453:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12432:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes storage ref[] storage ref"
+ }
+ },
+ "id": 791,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "12432:36:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "12410:58:1"
+ },
+ {
+ "assignments": [
+ 794
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 794,
+ "name": "totalLength",
+ "nodeType": "VariableDeclaration",
+ "scope": 898,
+ "src": "12474:19:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 793,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12474:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 796,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 795,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "12496:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "12474:23:1"
+ },
+ {
+ "body": {
+ "id": 819,
+ "nodeType": "Block",
+ "src": "12545:85:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 817,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 807,
+ "name": "totalLength",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 794,
+ "src": "12553:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 810,
+ "name": "offchainStorageRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 149,
+ "src": "12583:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes storage ref[] storage ref)"
+ }
+ },
+ "id": 812,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 811,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 771,
+ "src": "12604:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12583:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes storage ref[] storage ref"
+ }
+ },
+ "id": 814,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 813,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 798,
+ "src": "12613:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12583:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "id": 815,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "12583:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 808,
+ "name": "totalLength",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 794,
+ "src": "12567:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 809,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 44380,
+ "src": "12567:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 816,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12567:56:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "12553:70:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 818,
+ "nodeType": "ExpressionStatement",
+ "src": "12553:70:1"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 803,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 801,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 798,
+ "src": "12523:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 802,
+ "name": "numberRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 787,
+ "src": "12527:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "12523:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 820,
+ "initializationExpression": {
+ "assignments": [
+ 798
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 798,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 820,
+ "src": "12508:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 797,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12508:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 800,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 799,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "12520:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "12508:13:1"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 805,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "++",
+ "prefix": false,
+ "src": "12540:3:1",
+ "subExpression": {
+ "argumentTypes": null,
+ "id": 804,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 798,
+ "src": "12540:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 806,
+ "nodeType": "ExpressionStatement",
+ "src": "12540:3:1"
+ },
+ "nodeType": "ForStatement",
+ "src": "12503:127:1"
+ },
+ {
+ "assignments": [
+ 822
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 822,
+ "name": "concatenated",
+ "nodeType": "VariableDeclaration",
+ "scope": 898,
+ "src": "12636:25:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 821,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "12636:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 827,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 825,
+ "name": "totalLength",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 794,
+ "src": "12674:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 824,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "NewExpression",
+ "src": "12664:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
+ "typeString": "function (uint256) pure returns (bytes memory)"
+ },
+ "typeName": {
+ "id": 823,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "12668:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ }
+ },
+ "id": 826,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12664:22:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory",
+ "typeString": "bytes memory"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "12636:50:1"
+ },
+ {
+ "assignments": [
+ 829
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 829,
+ "name": "lastIndex",
+ "nodeType": "VariableDeclaration",
+ "scope": 898,
+ "src": "12692:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 828,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12692:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 831,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 830,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "12712:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "12692:21:1"
+ },
+ {
+ "assignments": [
+ 835
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 835,
+ "name": "lengths",
+ "nodeType": "VariableDeclaration",
+ "scope": 898,
+ "src": "12719:24:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 833,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12719:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 834,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "12719:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 841,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 839,
+ "name": "numberRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 787,
+ "src": "12760:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 838,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "NewExpression",
+ "src": "12746:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
+ "typeString": "function (uint256) pure returns (uint256[] memory)"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 836,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12750:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 837,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "12750:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ }
+ },
+ "id": 840,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12746:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "12719:53:1"
+ },
+ {
+ "body": {
+ "id": 892,
+ "nodeType": "Block",
+ "src": "12820:221:1",
+ "statements": [
+ {
+ "assignments": [
+ 853
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 853,
+ "name": "root",
+ "nodeType": "VariableDeclaration",
+ "scope": 892,
+ "src": "12828:18:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 852,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "12828:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 859,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 854,
+ "name": "offchainStorageRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 149,
+ "src": "12849:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes_storage_$dyn_storage_$",
+ "typeString": "mapping(address => bytes storage ref[] storage ref)"
+ }
+ },
+ "id": 856,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 855,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 771,
+ "src": "12870:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12849:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage",
+ "typeString": "bytes storage ref[] storage ref"
+ }
+ },
+ "id": 858,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 857,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 843,
+ "src": "12879:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12849:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "12828:53:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 865,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 860,
+ "name": "lengths",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 835,
+ "src": "12889:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "id": 862,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 861,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 843,
+ "src": "12897:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "12889:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 863,
+ "name": "root",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 853,
+ "src": "12902:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes storage pointer"
+ }
+ },
+ "id": 864,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "12902:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "12889:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 866,
+ "nodeType": "ExpressionStatement",
+ "src": "12889:24:1"
+ },
+ {
+ "body": {
+ "id": 890,
+ "nodeType": "Block",
+ "src": "12962:73:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 885,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 879,
+ "name": "concatenated",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 822,
+ "src": "12972:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ "id": 881,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 880,
+ "name": "lastIndex",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 829,
+ "src": "12985:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "12972:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes1",
+ "typeString": "bytes1"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 882,
+ "name": "root",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 853,
+ "src": "12998:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes storage pointer"
+ }
+ },
+ "id": 884,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 883,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 868,
+ "src": "13003:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12998:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes1",
+ "typeString": "bytes1"
+ }
+ },
+ "src": "12972:33:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes1",
+ "typeString": "bytes1"
+ }
+ },
+ "id": 886,
+ "nodeType": "ExpressionStatement",
+ "src": "12972:33:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 888,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "++",
+ "prefix": false,
+ "src": "13015:11:1",
+ "subExpression": {
+ "argumentTypes": null,
+ "id": 887,
+ "name": "lastIndex",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 829,
+ "src": "13015:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 889,
+ "nodeType": "ExpressionStatement",
+ "src": "13015:11:1"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 875,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 871,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 868,
+ "src": "12941:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 872,
+ "name": "lengths",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 835,
+ "src": "12945:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "id": 874,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 873,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 843,
+ "src": "12953:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12945:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "12941:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 891,
+ "initializationExpression": {
+ "assignments": [
+ 868
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 868,
+ "name": "j",
+ "nodeType": "VariableDeclaration",
+ "scope": 891,
+ "src": "12926:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 867,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12926:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 870,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 869,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "12938:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "12926:13:1"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 877,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "++",
+ "prefix": false,
+ "src": "12957:3:1",
+ "subExpression": {
+ "argumentTypes": null,
+ "id": 876,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 868,
+ "src": "12957:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 878,
+ "nodeType": "ExpressionStatement",
+ "src": "12957:3:1"
+ },
+ "nodeType": "ForStatement",
+ "src": "12921:114:1"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 848,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 846,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 843,
+ "src": "12798:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 847,
+ "name": "numberRoots",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 787,
+ "src": "12802:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "12798:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 893,
+ "initializationExpression": {
+ "assignments": [
+ 843
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 843,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 893,
+ "src": "12783:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 842,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12783:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 845,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 844,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "12795:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "12783:13:1"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 850,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "++",
+ "prefix": false,
+ "src": "12815:3:1",
+ "subExpression": {
+ "argumentTypes": null,
+ "id": 849,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 843,
+ "src": "12815:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 851,
+ "nodeType": "ExpressionStatement",
+ "src": "12815:3:1"
+ },
+ "nodeType": "ForStatement",
+ "src": "12778:263:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 894,
+ "name": "concatenated",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 822,
+ "src": "13055:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 895,
+ "name": "lengths",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 835,
+ "src": "13069:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ }
+ ],
+ "id": 896,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "13054:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$",
+ "typeString": "tuple(bytes memory,uint256[] memory)"
+ }
+ },
+ "functionReturnParameters": 778,
+ "id": 897,
+ "nodeType": "Return",
+ "src": "13047:30:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the full list of offchain storage roots for an account.\n@param account The account whose storage roots to return.\n@return List of storage root URLs.",
+ "id": 899,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getOffchainStorageRoots",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 772,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 771,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 899,
+ "src": "12266:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 770,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "12266:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "12265:17:1"
+ },
+ "returnParameters": {
+ "id": 778,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 774,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 899,
+ "src": "12318:12:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 773,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "12318:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 777,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 899,
+ "src": "12332:16:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 775,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12332:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 776,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "12332:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "12317:32:1"
+ },
+ "scope": 2783,
+ "src": "12233:849:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 957,
+ "nodeType": "Block",
+ "src": "13579:407:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 908,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "13603:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 909,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "13603:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 907,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "13593:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 910,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13593:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4e6f7420616e206163636f756e74",
+ "id": 911,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "13616:16:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3",
+ "typeString": "literal_string \"Not an account\""
+ },
+ "value": "Not an account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3",
+ "typeString": "literal_string \"Not an account\""
+ }
+ ],
+ "id": 906,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "13585:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 912,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13585:48:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 913,
+ "nodeType": "ExpressionStatement",
+ "src": "13585:48:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 919,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 915,
+ "name": "beneficiary",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 901,
+ "src": "13647:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 917,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "13670:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 916,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "13662:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 918,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13662:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "13647:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "42656e65666963696172792063616e6e6f74206265206164647265737320307830",
+ "id": 920,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "13674:35:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_6b9be4885aabe26164b18b8c3b7a500e9a4dfe65c37cdbd08d568c1619cf4af0",
+ "typeString": "literal_string \"Beneficiary cannot be address 0x0\""
+ },
+ "value": "Beneficiary cannot be address 0x0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_6b9be4885aabe26164b18b8c3b7a500e9a4dfe65c37cdbd08d568c1619cf4af0",
+ "typeString": "literal_string \"Beneficiary cannot be address 0x0\""
+ }
+ ],
+ "id": 914,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "13639:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 921,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13639:71:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 922,
+ "nodeType": "ExpressionStatement",
+ "src": "13639:71:1"
+ },
+ {
+ "assignments": [
+ 926
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 926,
+ "name": "f",
+ "nodeType": "VariableDeclaration",
+ "scope": 957,
+ "src": "13716:29:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 925,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "13716:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 931,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 929,
+ "name": "fraction",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 903,
+ "src": "13765:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 927,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "13748:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 928,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "wrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3044,
+ "src": "13748:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 930,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13748:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "13716:58:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "id": 935,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "13794:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 936,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "fixed1",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3032,
+ "src": "13794:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function () pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 937,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13794:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 933,
+ "name": "f",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 926,
+ "src": "13788:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "id": 934,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "lte",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3579,
+ "src": "13788:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,struct FixidityLib.Fraction memory) pure returns (bool)"
+ }
+ },
+ "id": 938,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13788:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4672616374696f6e206d757374206e6f742062652067726561746572207468616e2031",
+ "id": 939,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "13817:37:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_9daf5af7d6eb0ba53525899f14882a9d1b604650440b8edfd463c62c0e1c88fe",
+ "typeString": "literal_string \"Fraction must not be greater than 1\""
+ },
+ "value": "Fraction must not be greater than 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_9daf5af7d6eb0ba53525899f14882a9d1b604650440b8edfd463c62c0e1c88fe",
+ "typeString": "literal_string \"Fraction must not be greater than 1\""
+ }
+ ],
+ "id": 932,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "13780:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 940,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13780:75:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 941,
+ "nodeType": "ExpressionStatement",
+ "src": "13780:75:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 950,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 942,
+ "name": "paymentDelegations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 153,
+ "src": "13861:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PaymentDelegation_$115_storage_$",
+ "typeString": "mapping(address => struct Accounts.PaymentDelegation storage ref)"
+ }
+ },
+ "id": 945,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 943,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "13880:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 944,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "13880:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "13861:30:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage",
+ "typeString": "struct Accounts.PaymentDelegation storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 947,
+ "name": "beneficiary",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 901,
+ "src": "13912:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 948,
+ "name": "f",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 926,
+ "src": "13925:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ ],
+ "id": 946,
+ "name": "PaymentDelegation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 115,
+ "src": "13894:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_struct$_PaymentDelegation_$115_storage_ptr_$",
+ "typeString": "type(struct Accounts.PaymentDelegation storage pointer)"
+ }
+ },
+ "id": 949,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "structConstructorCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13894:33:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_memory",
+ "typeString": "struct Accounts.PaymentDelegation memory"
+ }
+ },
+ "src": "13861:66:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage",
+ "typeString": "struct Accounts.PaymentDelegation storage ref"
+ }
+ },
+ "id": 951,
+ "nodeType": "ExpressionStatement",
+ "src": "13861:66:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 953,
+ "name": "beneficiary",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 901,
+ "src": "13959:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 954,
+ "name": "fraction",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 903,
+ "src": "13972:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 952,
+ "name": "PaymentDelegationSet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 341,
+ "src": "13938:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,uint256)"
+ }
+ },
+ "id": 955,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13938:43:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 956,
+ "nodeType": "EmitStatement",
+ "src": "13933:48:1"
+ }
+ ]
+ },
+ "documentation": "@notice Sets validator payment delegation settings.\n@param beneficiary The address that should receive a portion of validator\npayments.\n@param fraction The fraction of the validator's payment that should be\ndiverted to `beneficiary` every epoch, given as FixidityLib value. Must not\nbe greater than 1.\n@dev Use `deletePaymentDelegation` to unset the payment delegation.",
+ "id": 958,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "setPaymentDelegation",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 904,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 901,
+ "name": "beneficiary",
+ "nodeType": "VariableDeclaration",
+ "scope": 958,
+ "src": "13533:19:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 900,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "13533:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 903,
+ "name": "fraction",
+ "nodeType": "VariableDeclaration",
+ "scope": 958,
+ "src": "13554:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 902,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "13554:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "13532:39:1"
+ },
+ "returnParameters": {
+ "id": 905,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "13579:0:1"
+ },
+ "scope": 2783,
+ "src": "13503:483:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9330,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 991,
+ "nodeType": "Block",
+ "src": "14144:198:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 963,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "14168:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 964,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "14168:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 962,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "14158:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 965,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14158:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4e6f7420616e206163636f756e74",
+ "id": 966,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "14181:16:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3",
+ "typeString": "literal_string \"Not an account\""
+ },
+ "value": "Not an account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3",
+ "typeString": "literal_string \"Not an account\""
+ }
+ ],
+ "id": 961,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "14150:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 967,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14150:48:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 968,
+ "nodeType": "ExpressionStatement",
+ "src": "14150:48:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 982,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 969,
+ "name": "paymentDelegations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 153,
+ "src": "14204:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PaymentDelegation_$115_storage_$",
+ "typeString": "mapping(address => struct Accounts.PaymentDelegation storage ref)"
+ }
+ },
+ "id": 972,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 970,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "14223:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 971,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "14223:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "14204:30:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage",
+ "typeString": "struct Accounts.PaymentDelegation storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "307830",
+ "id": 975,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "14263:3:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0x0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 974,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "14255:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 976,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14255:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 979,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "14286:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 977,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "14269:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 978,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "wrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3044,
+ "src": "14269:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 980,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14269:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ ],
+ "id": 973,
+ "name": "PaymentDelegation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 115,
+ "src": "14237:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_struct$_PaymentDelegation_$115_storage_ptr_$",
+ "typeString": "type(struct Accounts.PaymentDelegation storage pointer)"
+ }
+ },
+ "id": 981,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "structConstructorCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14237:52:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_memory",
+ "typeString": "struct Accounts.PaymentDelegation memory"
+ }
+ },
+ "src": "14204:85:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage",
+ "typeString": "struct Accounts.PaymentDelegation storage ref"
+ }
+ },
+ "id": 983,
+ "nodeType": "ExpressionStatement",
+ "src": "14204:85:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "307830",
+ "id": 986,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "14329:3:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0x0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 985,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "14321:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 987,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14321:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 988,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "14335:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 984,
+ "name": "PaymentDelegationSet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 341,
+ "src": "14300:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,uint256)"
+ }
+ },
+ "id": 989,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14300:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 990,
+ "nodeType": "EmitStatement",
+ "src": "14295:42:1"
+ }
+ ]
+ },
+ "documentation": "@notice Removes a validator's payment delegation by setting benficiary and\nfraction to 0.",
+ "id": 992,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "deletePaymentDelegation",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 959,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "14134:2:1"
+ },
+ "returnParameters": {
+ "id": 960,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "14144:0:1"
+ },
+ "scope": 2783,
+ "src": "14102:240:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1015,
+ "nodeType": "Block",
+ "src": "14617:144:1",
+ "statements": [
+ {
+ "assignments": [
+ 1002
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1002,
+ "name": "delegation",
+ "nodeType": "VariableDeclaration",
+ "scope": 1015,
+ "src": "14623:36:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage_ptr",
+ "typeString": "struct Accounts.PaymentDelegation"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 1001,
+ "name": "PaymentDelegation",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 115,
+ "src": "14623:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage_ptr",
+ "typeString": "struct Accounts.PaymentDelegation"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1006,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1003,
+ "name": "paymentDelegations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 153,
+ "src": "14662:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_PaymentDelegation_$115_storage_$",
+ "typeString": "mapping(address => struct Accounts.PaymentDelegation storage ref)"
+ }
+ },
+ "id": 1005,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1004,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 994,
+ "src": "14681:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "14662:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage",
+ "typeString": "struct Accounts.PaymentDelegation storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "14623:66:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1007,
+ "name": "delegation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1002,
+ "src": "14703:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage_ptr",
+ "typeString": "struct Accounts.PaymentDelegation storage pointer"
+ }
+ },
+ "id": 1008,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "beneficiary",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 112,
+ "src": "14703:22:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1009,
+ "name": "delegation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1002,
+ "src": "14727:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_PaymentDelegation_$115_storage_ptr",
+ "typeString": "struct Accounts.PaymentDelegation storage pointer"
+ }
+ },
+ "id": 1010,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "fraction",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 114,
+ "src": "14727:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "id": 1011,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unwrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3055,
+ "src": "14727:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)"
+ }
+ },
+ "id": 1012,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14727:28:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 1013,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "14702:54:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
+ "typeString": "tuple(address,uint256)"
+ }
+ },
+ "functionReturnParameters": 1000,
+ "id": 1014,
+ "nodeType": "Return",
+ "src": "14695:61:1"
+ }
+ ]
+ },
+ "documentation": "@notice Gets validator payment delegation settings.\n@param account Account of the validator.\n@return Beneficiary address and fraction of payment delegated.",
+ "id": 1016,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getPaymentDelegation",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 995,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 994,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 1016,
+ "src": "14559:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 993,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "14559:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "14558:17:1"
+ },
+ "returnParameters": {
+ "id": 1000,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 997,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1016,
+ "src": "14599:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 996,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "14599:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 999,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1016,
+ "src": "14608:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 998,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "14608:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "14598:18:1"
+ },
+ "scope": 2783,
+ "src": "14529:232:1",
+ "stateMutability": "view",
+ "superFunction": 9339,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 1139,
+ "nodeType": "Block",
+ "src": "15004:929:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1025,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "15028:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1026,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "15028:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 1024,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "15018:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 1027,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15018:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4e6f7420616e206163636f756e74",
+ "id": 1028,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "15041:16:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3",
+ "typeString": "literal_string \"Not an account\""
+ },
+ "value": "Not an account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3",
+ "typeString": "literal_string \"Not an account\""
+ }
+ ],
+ "id": 1023,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "15010:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1029,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15010:48:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1030,
+ "nodeType": "ExpressionStatement",
+ "src": "15010:48:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1033,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1018,
+ "src": "15085:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1032,
+ "name": "isNotAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2579,
+ "src": "15072:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 1034,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15072:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "43616e6e6f7420617574686f72697a65206163636f756e74206173207369676e6572",
+ "id": 1035,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "15094:36:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_66a742b0342adeb78ebc6b50a299bc137177e73ef6e9121b9f0ac793215dc09b",
+ "typeString": "literal_string \"Cannot authorize account as signer\""
+ },
+ "value": "Cannot authorize account as signer"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_66a742b0342adeb78ebc6b50a299bc137177e73ef6e9121b9f0ac793215dc09b",
+ "typeString": "literal_string \"Cannot authorize account as signer\""
+ }
+ ],
+ "id": 1031,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "15064:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1036,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15064:67:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1037,
+ "nodeType": "ExpressionStatement",
+ "src": "15064:67:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1040,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "15191:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1041,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "15191:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1042,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1018,
+ "src": "15203:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1039,
+ "name": "isNotAuthorizedSignerForAnotherAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2638,
+ "src": "15152:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address,address) view returns (bool)"
+ }
+ },
+ "id": 1043,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15152:58:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4e6f742061207369676e657220666f722074686973206163636f756e74",
+ "id": 1044,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "15218:31:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_847103e511031274286610b14f624d0e55a9595e226440674c4864c332fb4fc4",
+ "typeString": "literal_string \"Not a signer for this account\""
+ },
+ "value": "Not a signer for this account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_847103e511031274286610b14f624d0e55a9595e226440674c4864c332fb4fc4",
+ "typeString": "literal_string \"Not a signer for this account\""
+ }
+ ],
+ "id": 1038,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "15137:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1045,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15137:118:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1046,
+ "nodeType": "ExpressionStatement",
+ "src": "15137:118:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1049,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "15278:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1050,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "15278:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1051,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1018,
+ "src": "15290:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1052,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1020,
+ "src": "15298:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1048,
+ "name": "isSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1694,
+ "src": "15269:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 1053,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15269:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4d75737420617574686f72697a65207369676e6572206265666f72652073657474696e672061732064656661756c74",
+ "id": 1054,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "15305:49:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_c6b5cc68d87d1115d31341909a93d841335e586024494b91b44184a18b43c9ff",
+ "typeString": "literal_string \"Must authorize signer before setting as default\""
+ },
+ "value": "Must authorize signer before setting as default"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_c6b5cc68d87d1115d31341909a93d841335e586024494b91b44184a18b43c9ff",
+ "typeString": "literal_string \"Must authorize signer before setting as default\""
+ }
+ ],
+ "id": 1047,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "15261:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1055,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15261:94:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1056,
+ "nodeType": "ExpressionStatement",
+ "src": "15261:94:1"
+ },
+ {
+ "assignments": [
+ 1058
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1058,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 1139,
+ "src": "15362:23:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 1057,
+ "name": "Account",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 110,
+ "src": "15362:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1063,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1059,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "15388:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 1062,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1060,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "15397:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1061,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "15397:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "15388:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "15362:46:1"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1065,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1020,
+ "src": "15431:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1064,
+ "name": "isLegacyRole",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2086,
+ "src": "15418:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (bytes32) pure returns (bool)"
+ }
+ },
+ "id": 1066,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15418:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "id": 1130,
+ "nodeType": "Block",
+ "src": "15764:111:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1121,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1114,
+ "name": "defaultSigners",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 129,
+ "src": "15772:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => address))"
+ }
+ },
+ "id": 1118,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1115,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "15787:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1116,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "15787:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "15772:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 1119,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1117,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1020,
+ "src": "15799:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "15772:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1120,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1018,
+ "src": "15807:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "15772:41:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1122,
+ "nodeType": "ExpressionStatement",
+ "src": "15772:41:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1124,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "15843:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1125,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "15843:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1126,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1018,
+ "src": "15855:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1127,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1020,
+ "src": "15863:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1123,
+ "name": "DefaultSignerSet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 261,
+ "src": "15826:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1128,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15826:42:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1129,
+ "nodeType": "EmitStatement",
+ "src": "15821:47:1"
+ }
+ ]
+ },
+ "id": 1131,
+ "nodeType": "IfStatement",
+ "src": "15414:461:1",
+ "trueBody": {
+ "id": 1113,
+ "nodeType": "Block",
+ "src": "15438:320:1",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 1069,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1067,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1020,
+ "src": "15450:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1068,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "15458:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "15450:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 1081,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1079,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1020,
+ "src": "15528:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1080,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "15536:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "15528:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 1093,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1091,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1020,
+ "src": "15620:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1092,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "15628:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "15620:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 1103,
+ "nodeType": "IfStatement",
+ "src": "15616:82:1",
+ "trueBody": {
+ "id": 1102,
+ "nodeType": "Block",
+ "src": "15645:53:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1100,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1094,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1058,
+ "src": "15655:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1097,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "15655:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1098,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "validator",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 89,
+ "src": "15655:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1099,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1018,
+ "src": "15683:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "15655:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1101,
+ "nodeType": "ExpressionStatement",
+ "src": "15655:34:1"
+ }
+ ]
+ }
+ },
+ "id": 1104,
+ "nodeType": "IfStatement",
+ "src": "15524:174:1",
+ "trueBody": {
+ "id": 1090,
+ "nodeType": "Block",
+ "src": "15555:55:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1088,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1082,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1058,
+ "src": "15565:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1085,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "15565:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1086,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "attestation",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 91,
+ "src": "15565:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1087,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1018,
+ "src": "15595:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "15565:36:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1089,
+ "nodeType": "ExpressionStatement",
+ "src": "15565:36:1"
+ }
+ ]
+ }
+ },
+ "id": 1105,
+ "nodeType": "IfStatement",
+ "src": "15446:252:1",
+ "trueBody": {
+ "id": 1078,
+ "nodeType": "Block",
+ "src": "15470:48:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1076,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1070,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1058,
+ "src": "15480:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1073,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "15480:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1074,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "vote",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 87,
+ "src": "15480:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1075,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1018,
+ "src": "15503:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "15480:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1077,
+ "nodeType": "ExpressionStatement",
+ "src": "15480:29:1"
+ }
+ ]
+ }
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1107,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "15726:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1108,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "15726:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1109,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1018,
+ "src": "15738:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1110,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1020,
+ "src": "15746:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1106,
+ "name": "LegacySignerSet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 277,
+ "src": "15710:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1111,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15710:41:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1112,
+ "nodeType": "EmitStatement",
+ "src": "15705:46:1"
+ }
+ ]
+ }
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1133,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "15903:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1134,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "15903:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1135,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1018,
+ "src": "15915:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1136,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1020,
+ "src": "15923:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1132,
+ "name": "IndexedSignerSet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 245,
+ "src": "15886:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1137,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15886:42:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1138,
+ "nodeType": "EmitStatement",
+ "src": "15881:47:1"
+ }
+ ]
+ },
+ "documentation": "@notice Set the indexed signer for a specific role\n@param signer the address to set as default\n@param role the role to register a default signer for",
+ "id": 1140,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "setIndexedSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1021,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1018,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1140,
+ "src": "14967:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1017,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "14967:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1020,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1140,
+ "src": "14983:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1019,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "14983:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "14966:30:1"
+ },
+ "returnParameters": {
+ "id": 1022,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "15004:0:1"
+ },
+ "scope": 2783,
+ "src": "14941:992:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1182,
+ "nodeType": "Block",
+ "src": "16548:238:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1154,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1142,
+ "src": "16579:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1155,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1144,
+ "src": "16587:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1156,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1146,
+ "src": "16593:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1157,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1148,
+ "src": "16596:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1158,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1150,
+ "src": "16599:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1153,
+ "name": "authorizeAddressWithRole",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2748,
+ "src": "16554:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32,uint8,bytes32,bytes32)"
+ }
+ },
+ "id": 1159,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16554:47:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1160,
+ "nodeType": "ExpressionStatement",
+ "src": "16554:47:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1173,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1161,
+ "name": "signerAuthorizations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 137,
+ "src": "16607:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))"
+ }
+ },
+ "id": 1166,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1162,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "16628:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1163,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "16628:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "16607:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))"
+ }
+ },
+ "id": 1167,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1164,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1144,
+ "src": "16640:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "16607:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$",
+ "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)"
+ }
+ },
+ "id": 1168,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1165,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1142,
+ "src": "16646:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "16607:46:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage",
+ "typeString": "struct Accounts.SignerAuthorization storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 1170,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "16693:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 1171,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "16716:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 1169,
+ "name": "SignerAuthorization",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 97,
+ "src": "16656:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_struct$_SignerAuthorization_$97_storage_ptr_$",
+ "typeString": "type(struct Accounts.SignerAuthorization storage pointer)"
+ }
+ },
+ "id": 1172,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "structConstructorCall",
+ "lValueRequested": false,
+ "names": [
+ "started",
+ "completed"
+ ],
+ "nodeType": "FunctionCall",
+ "src": "16656:71:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_memory",
+ "typeString": "struct Accounts.SignerAuthorization memory"
+ }
+ },
+ "src": "16607:120:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage",
+ "typeString": "struct Accounts.SignerAuthorization storage ref"
+ }
+ },
+ "id": 1174,
+ "nodeType": "ExpressionStatement",
+ "src": "16607:120:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1176,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "16756:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1177,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "16756:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1178,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1142,
+ "src": "16768:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1179,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1144,
+ "src": "16776:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1175,
+ "name": "SignerAuthorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 203,
+ "src": "16739:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1180,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16739:42:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1181,
+ "nodeType": "EmitStatement",
+ "src": "16734:47:1"
+ }
+ ]
+ },
+ "documentation": "@notice Authorizes an address to act as a signer, for `role`, on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param role The role to authorize signing for.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s EIP712 signature over `role`, `msg.sender` \n and `signer`.",
+ "id": 1183,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "authorizeSignerWithSignature",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1151,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1142,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1183,
+ "src": "16474:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1141,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "16474:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1144,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1183,
+ "src": "16490:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1143,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "16490:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1146,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 1183,
+ "src": "16504:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 1145,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "16504:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1148,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 1183,
+ "src": "16513:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1147,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "16513:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1150,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 1183,
+ "src": "16524:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1149,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "16524:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "16473:61:1"
+ },
+ "returnParameters": {
+ "id": 1152,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "16548:0:1"
+ },
+ "scope": 2783,
+ "src": "16436:350:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1224,
+ "nodeType": "Block",
+ "src": "16927:224:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1197,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1185,
+ "src": "16950:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1198,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1189,
+ "src": "16958:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1199,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1191,
+ "src": "16961:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1200,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1193,
+ "src": "16964:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1196,
+ "name": "authorizeAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2672,
+ "src": "16933:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,uint8,bytes32,bytes32)"
+ }
+ },
+ "id": 1201,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16933:33:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1202,
+ "nodeType": "ExpressionStatement",
+ "src": "16933:33:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1215,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1203,
+ "name": "signerAuthorizations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 137,
+ "src": "16972:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))"
+ }
+ },
+ "id": 1208,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1204,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "16993:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1205,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "16993:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "16972:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))"
+ }
+ },
+ "id": 1209,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1206,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1187,
+ "src": "17005:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "16972:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$",
+ "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)"
+ }
+ },
+ "id": 1210,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1207,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1185,
+ "src": "17011:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "16972:46:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage",
+ "typeString": "struct Accounts.SignerAuthorization storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 1212,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "17058:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 1213,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "17081:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 1211,
+ "name": "SignerAuthorization",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 97,
+ "src": "17021:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_struct$_SignerAuthorization_$97_storage_ptr_$",
+ "typeString": "type(struct Accounts.SignerAuthorization storage pointer)"
+ }
+ },
+ "id": 1214,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "structConstructorCall",
+ "lValueRequested": false,
+ "names": [
+ "started",
+ "completed"
+ ],
+ "nodeType": "FunctionCall",
+ "src": "17021:71:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_memory",
+ "typeString": "struct Accounts.SignerAuthorization memory"
+ }
+ },
+ "src": "16972:120:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage",
+ "typeString": "struct Accounts.SignerAuthorization storage ref"
+ }
+ },
+ "id": 1216,
+ "nodeType": "ExpressionStatement",
+ "src": "16972:120:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1218,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "17121:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1219,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "17121:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1220,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1185,
+ "src": "17133:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1221,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1187,
+ "src": "17141:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1217,
+ "name": "SignerAuthorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 203,
+ "src": "17104:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1222,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17104:42:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1223,
+ "nodeType": "EmitStatement",
+ "src": "17099:47:1"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 1225,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "legacyAuthorizeSignerWithSignature",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1194,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1185,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1225,
+ "src": "16839:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1184,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "16839:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1187,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1225,
+ "src": "16859:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1186,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "16859:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1189,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 1225,
+ "src": "16877:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 1188,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "16877:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1191,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 1225,
+ "src": "16890:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1190,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "16890:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1193,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 1225,
+ "src": "16905:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1192,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "16905:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "16833:85:1"
+ },
+ "returnParameters": {
+ "id": 1195,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "16927:0:1"
+ },
+ "scope": 2783,
+ "src": "16790:361:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "private"
+ },
+ {
+ "body": {
+ "id": 1257,
+ "nodeType": "Block",
+ "src": "17650:168:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1239,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1227,
+ "src": "17691:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1240,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "17699:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1241,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1229,
+ "src": "17711:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1242,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1231,
+ "src": "17714:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1243,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1233,
+ "src": "17717:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1238,
+ "name": "legacyAuthorizeSignerWithSignature",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1225,
+ "src": "17656:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32,uint8,bytes32,bytes32)"
+ }
+ },
+ "id": 1244,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17656:63:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1245,
+ "nodeType": "ExpressionStatement",
+ "src": "17656:63:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1247,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1227,
+ "src": "17742:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1248,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "17750:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1246,
+ "name": "setIndexedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1140,
+ "src": "17725:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32)"
+ }
+ },
+ "id": 1249,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17725:36:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1250,
+ "nodeType": "ExpressionStatement",
+ "src": "17725:36:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1252,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "17794:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1253,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "17794:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1254,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1227,
+ "src": "17806:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1251,
+ "name": "VoteSignerAuthorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 189,
+ "src": "17773:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1255,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17773:40:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1256,
+ "nodeType": "EmitStatement",
+ "src": "17768:45:1"
+ }
+ ]
+ },
+ "documentation": "@notice Authorizes an address to sign votes on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s signature on `msg.sender`.",
+ "id": 1258,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 1236,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 1235,
+ "name": "nonReentrant",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 9760,
+ "src": "17635:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "17635:12:1"
+ }
+ ],
+ "name": "authorizeVoteSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1234,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1227,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1258,
+ "src": "17571:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1226,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "17571:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1229,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 1258,
+ "src": "17587:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 1228,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "17587:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1231,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 1258,
+ "src": "17596:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1230,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "17596:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1233,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 1258,
+ "src": "17607:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1232,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "17607:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "17570:47:1"
+ },
+ "returnParameters": {
+ "id": 1237,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "17650:0:1"
+ },
+ "scope": 2783,
+ "src": "17542:276:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9266,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 1301,
+ "nodeType": "Block",
+ "src": "18335:275:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1272,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1260,
+ "src": "18376:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1273,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "18384:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1274,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1262,
+ "src": "18401:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1275,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1264,
+ "src": "18404:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1276,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1266,
+ "src": "18407:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1271,
+ "name": "legacyAuthorizeSignerWithSignature",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1225,
+ "src": "18341:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32,uint8,bytes32,bytes32)"
+ }
+ },
+ "id": 1277,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18341:68:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1278,
+ "nodeType": "ExpressionStatement",
+ "src": "18341:68:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1280,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1260,
+ "src": "18432:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1281,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "18440:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1279,
+ "name": "setIndexedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1140,
+ "src": "18415:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32)"
+ }
+ },
+ "id": 1282,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18415:41:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1283,
+ "nodeType": "ExpressionStatement",
+ "src": "18415:41:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1291,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "!",
+ "prefix": true,
+ "src": "18471:40:1",
+ "subExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1288,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "18500:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1289,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "18500:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 1285,
+ "name": "getValidators",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8614,
+ "src": "18472:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IValidators_$31061_$",
+ "typeString": "function () view returns (contract IValidators)"
+ }
+ },
+ "id": 1286,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18472:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IValidators_$31061",
+ "typeString": "contract IValidators"
+ }
+ },
+ "id": 1287,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "isValidator",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 31013,
+ "src": "18472:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view external returns (bool)"
+ }
+ },
+ "id": 1290,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18472:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "43616e6e6f7420617574686f72697a652076616c696461746f72207369676e6572",
+ "id": 1292,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "18513:35:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_7b0bdcee30bd2e63a51a6b101bc0231d1bf2b6bcc8d298dfb752f57f81df8ca2",
+ "typeString": "literal_string \"Cannot authorize validator signer\""
+ },
+ "value": "Cannot authorize validator signer"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_7b0bdcee30bd2e63a51a6b101bc0231d1bf2b6bcc8d298dfb752f57f81df8ca2",
+ "typeString": "literal_string \"Cannot authorize validator signer\""
+ }
+ ],
+ "id": 1284,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "18463:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1293,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18463:86:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1294,
+ "nodeType": "ExpressionStatement",
+ "src": "18463:86:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1296,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "18586:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1297,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "18586:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1298,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1260,
+ "src": "18598:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1295,
+ "name": "ValidatorSignerAuthorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 195,
+ "src": "18560:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1299,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18560:45:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1300,
+ "nodeType": "EmitStatement",
+ "src": "18555:50:1"
+ }
+ ]
+ },
+ "documentation": "@notice Authorizes an address to sign consensus messages on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s signature on `msg.sender`.",
+ "id": 1302,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 1269,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 1268,
+ "name": "nonReentrant",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 9760,
+ "src": "18320:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "18320:12:1"
+ }
+ ],
+ "name": "authorizeValidatorSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1267,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1260,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1302,
+ "src": "18256:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1259,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "18256:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1262,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 1302,
+ "src": "18272:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 1261,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "18272:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1264,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 1302,
+ "src": "18281:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1263,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "18281:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1266,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 1302,
+ "src": "18292:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1265,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "18292:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "18255:47:1"
+ },
+ "returnParameters": {
+ "id": 1270,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "18335:0:1"
+ },
+ "scope": 2783,
+ "src": "18222:388:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9277,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 1348,
+ "nodeType": "Block",
+ "src": "19260:325:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1318,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1304,
+ "src": "19301:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1319,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "19309:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1320,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1306,
+ "src": "19326:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1321,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1308,
+ "src": "19329:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1322,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1310,
+ "src": "19332:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1317,
+ "name": "legacyAuthorizeSignerWithSignature",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1225,
+ "src": "19266:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32,uint8,bytes32,bytes32)"
+ }
+ },
+ "id": 1323,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19266:68:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1324,
+ "nodeType": "ExpressionStatement",
+ "src": "19266:68:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1326,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1304,
+ "src": "19357:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1327,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "19365:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1325,
+ "name": "setIndexedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1140,
+ "src": "19340:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32)"
+ }
+ },
+ "id": 1328,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19340:41:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1329,
+ "nodeType": "ExpressionStatement",
+ "src": "19340:41:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1334,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "19440:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1335,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "19440:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1336,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1304,
+ "src": "19452:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1337,
+ "name": "ecdsaPublicKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1312,
+ "src": "19460:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 1331,
+ "name": "getValidators",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8614,
+ "src": "19403:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IValidators_$31061_$",
+ "typeString": "function () view returns (contract IValidators)"
+ }
+ },
+ "id": 1332,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19403:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IValidators_$31061",
+ "typeString": "contract IValidators"
+ }
+ },
+ "id": 1333,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "updateEcdsaPublicKey",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 30952,
+ "src": "19403:36:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
+ "typeString": "function (address,address,bytes memory) external returns (bool)"
+ }
+ },
+ "id": 1338,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19403:72:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4661696c656420746f20757064617465204543445341207075626c6963206b6579",
+ "id": 1339,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "19483:35:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_e0e0c82b8716ee93056d930cfa7135e714749e927e765f055904e86cef6cdc98",
+ "typeString": "literal_string \"Failed to update ECDSA public key\""
+ },
+ "value": "Failed to update ECDSA public key"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_e0e0c82b8716ee93056d930cfa7135e714749e927e765f055904e86cef6cdc98",
+ "typeString": "literal_string \"Failed to update ECDSA public key\""
+ }
+ ],
+ "id": 1330,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "19388:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1340,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19388:136:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1341,
+ "nodeType": "ExpressionStatement",
+ "src": "19388:136:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1343,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "19561:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1344,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "19561:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1345,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1304,
+ "src": "19573:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1342,
+ "name": "ValidatorSignerAuthorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 195,
+ "src": "19535:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1346,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19535:45:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1347,
+ "nodeType": "EmitStatement",
+ "src": "19530:50:1"
+ }
+ ]
+ },
+ "documentation": "@notice Authorizes an address to sign consensus messages on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@param ecdsaPublicKey The ECDSA public key corresponding to `signer`.\n@dev v, r, s constitute `signer`'s signature on `msg.sender`.",
+ "id": 1349,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 1315,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 1314,
+ "name": "nonReentrant",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 9760,
+ "src": "19247:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "19247:12:1"
+ }
+ ],
+ "name": "authorizeValidatorSignerWithPublicKey",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1313,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1304,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1349,
+ "src": "19141:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1303,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "19141:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1306,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 1349,
+ "src": "19161:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 1305,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "19161:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1308,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 1349,
+ "src": "19174:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1307,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "19174:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1310,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 1349,
+ "src": "19189:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1309,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "19189:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1312,
+ "name": "ecdsaPublicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 1349,
+ "src": "19204:29:1",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 1311,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "19204:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "19135:102:1"
+ },
+ "returnParameters": {
+ "id": 1316,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "19260:0:1"
+ },
+ "scope": 2783,
+ "src": "19089:496:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9290,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 1401,
+ "nodeType": "Block",
+ "src": "20557:341:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1369,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1351,
+ "src": "20598:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1370,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "20606:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1371,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1353,
+ "src": "20623:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1372,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1355,
+ "src": "20626:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1373,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1357,
+ "src": "20629:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1368,
+ "name": "legacyAuthorizeSignerWithSignature",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1225,
+ "src": "20563:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32,uint8,bytes32,bytes32)"
+ }
+ },
+ "id": 1374,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20563:68:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1375,
+ "nodeType": "ExpressionStatement",
+ "src": "20563:68:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1377,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1351,
+ "src": "20654:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1378,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "20662:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1376,
+ "name": "setIndexedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1140,
+ "src": "20637:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32)"
+ }
+ },
+ "id": 1379,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20637:41:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1380,
+ "nodeType": "ExpressionStatement",
+ "src": "20637:41:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1385,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "20733:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1386,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "20733:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1387,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1351,
+ "src": "20745:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1388,
+ "name": "ecdsaPublicKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1359,
+ "src": "20753:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1389,
+ "name": "blsPublicKey",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1361,
+ "src": "20769:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1390,
+ "name": "blsPop",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1363,
+ "src": "20783:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ },
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ },
+ {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes calldata"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 1382,
+ "name": "getValidators",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8614,
+ "src": "20700:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IValidators_$31061_$",
+ "typeString": "function () view returns (contract IValidators)"
+ }
+ },
+ "id": 1383,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20700:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IValidators_$31061",
+ "typeString": "contract IValidators"
+ }
+ },
+ "id": 1384,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "updatePublicKeys",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 30967,
+ "src": "20700:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$",
+ "typeString": "function (address,address,bytes memory,bytes memory,bytes memory) external returns (bool)"
+ }
+ },
+ "id": 1391,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20700:90:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4661696c656420746f207570646174652076616c696461746f72206b657973",
+ "id": 1392,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "20798:33:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_61dffc19fe3f2ff571ba42fb286f490659e63b2603bc34f1ee899ebf6a7803eb",
+ "typeString": "literal_string \"Failed to update validator keys\""
+ },
+ "value": "Failed to update validator keys"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_61dffc19fe3f2ff571ba42fb286f490659e63b2603bc34f1ee899ebf6a7803eb",
+ "typeString": "literal_string \"Failed to update validator keys\""
+ }
+ ],
+ "id": 1381,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "20685:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1393,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20685:152:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1394,
+ "nodeType": "ExpressionStatement",
+ "src": "20685:152:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1396,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "20874:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1397,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "20874:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1398,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1351,
+ "src": "20886:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1395,
+ "name": "ValidatorSignerAuthorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 195,
+ "src": "20848:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1399,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20848:45:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1400,
+ "nodeType": "EmitStatement",
+ "src": "20843:50:1"
+ }
+ ]
+ },
+ "documentation": "@notice Authorizes an address to sign consensus messages on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param ecdsaPublicKey The ECDSA public key corresponding to `signer`.\n@param blsPublicKey The BLS public key that the validator is using for consensus, should pass\n proof of possession. 96 bytes.\n@param blsPop The BLS public key proof-of-possession, which consists of a signature on the\n account address. 48 bytes.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s signature on `msg.sender`.",
+ "id": 1402,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 1366,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 1365,
+ "name": "nonReentrant",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 9760,
+ "src": "20544:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "20544:12:1"
+ }
+ ],
+ "name": "authorizeValidatorSignerWithKeys",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1364,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1351,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1402,
+ "src": "20378:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1350,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "20378:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1353,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 1402,
+ "src": "20398:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 1352,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "20398:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1355,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 1402,
+ "src": "20411:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1354,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "20411:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1357,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 1402,
+ "src": "20426:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1356,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "20426:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1359,
+ "name": "ecdsaPublicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 1402,
+ "src": "20441:29:1",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 1358,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "20441:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1361,
+ "name": "blsPublicKey",
+ "nodeType": "VariableDeclaration",
+ "scope": 1402,
+ "src": "20476:27:1",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 1360,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "20476:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1363,
+ "name": "blsPop",
+ "nodeType": "VariableDeclaration",
+ "scope": 1402,
+ "src": "20509:21:1",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_calldata_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 1362,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "20509:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "20372:162:1"
+ },
+ "returnParameters": {
+ "id": 1367,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "20557:0:1"
+ },
+ "scope": 2783,
+ "src": "20331:567:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9307,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 1432,
+ "nodeType": "Block",
+ "src": "21386:189:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1414,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1404,
+ "src": "21427:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1415,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "21435:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1416,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1406,
+ "src": "21454:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1417,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1408,
+ "src": "21457:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1418,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1410,
+ "src": "21460:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1413,
+ "name": "legacyAuthorizeSignerWithSignature",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1225,
+ "src": "21392:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32,uint8,bytes32,bytes32)"
+ }
+ },
+ "id": 1419,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21392:70:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1420,
+ "nodeType": "ExpressionStatement",
+ "src": "21392:70:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1422,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1404,
+ "src": "21485:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1423,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "21493:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1421,
+ "name": "setIndexedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1140,
+ "src": "21468:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32)"
+ }
+ },
+ "id": 1424,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21468:43:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1425,
+ "nodeType": "ExpressionStatement",
+ "src": "21468:43:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1427,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "21551:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1428,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "21551:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1429,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1404,
+ "src": "21563:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1426,
+ "name": "AttestationSignerAuthorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 183,
+ "src": "21523:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1430,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21523:47:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1431,
+ "nodeType": "EmitStatement",
+ "src": "21518:52:1"
+ }
+ ]
+ },
+ "documentation": "@notice Authorizes an address to sign attestations on behalf of the account.\n@param signer The address of the signing key to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev v, r, s constitute `signer`'s signature on `msg.sender`.",
+ "id": 1433,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "authorizeAttestationSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1411,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1404,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1433,
+ "src": "21332:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1403,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "21332:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1406,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 1433,
+ "src": "21348:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 1405,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "21348:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1408,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 1433,
+ "src": "21357:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1407,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "21357:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1410,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 1433,
+ "src": "21368:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1409,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "21368:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "21331:47:1"
+ },
+ "returnParameters": {
+ "id": 1412,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "21386:0:1"
+ },
+ "scope": 2783,
+ "src": "21296:279:1",
+ "stateMutability": "nonpayable",
+ "superFunction": 9318,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1482,
+ "nodeType": "Block",
+ "src": "21859:404:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1442,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "21883:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1443,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "21883:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 1441,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "21873:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 1444,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21873:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "556e6b6e6f776e206163636f756e74",
+ "id": 1445,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "21896:17:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ },
+ "value": "Unknown account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ }
+ ],
+ "id": 1440,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "21865:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1446,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21865:49:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1447,
+ "nodeType": "ExpressionStatement",
+ "src": "21865:49:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 1457,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1450,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1435,
+ "src": "21948:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1449,
+ "name": "isNotAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2579,
+ "src": "21935:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 1451,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21935:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1453,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "21998:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1454,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "21998:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1455,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1435,
+ "src": "22010:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1452,
+ "name": "isNotAuthorizedSignerForAnotherAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2638,
+ "src": "21959:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address,address) view returns (bool)"
+ }
+ },
+ "id": 1456,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21959:58:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "21935:82:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "43616e6e6f742072652d617574686f72697a652061646472657373207369676e6572",
+ "id": 1458,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "22025:36:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_ceb9bc54b570b4de50c8c2ee45b626d76118b30832dc4b19d8f73d3a403d5cdd",
+ "typeString": "literal_string \"Cannot re-authorize address signer\""
+ },
+ "value": "Cannot re-authorize address signer"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_ceb9bc54b570b4de50c8c2ee45b626d76118b30832dc4b19d8f73d3a403d5cdd",
+ "typeString": "literal_string \"Cannot re-authorize address signer\""
+ }
+ ],
+ "id": 1448,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "21920:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1459,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21920:147:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1460,
+ "nodeType": "ExpressionStatement",
+ "src": "21920:147:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1473,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1461,
+ "name": "signerAuthorizations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 137,
+ "src": "22074:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))"
+ }
+ },
+ "id": 1466,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1462,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "22095:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1463,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "22095:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "22074:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))"
+ }
+ },
+ "id": 1467,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1464,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1437,
+ "src": "22107:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "22074:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$",
+ "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)"
+ }
+ },
+ "id": 1468,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1465,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1435,
+ "src": "22113:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "22074:46:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage",
+ "typeString": "struct Accounts.SignerAuthorization storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 1470,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "22160:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "66616c7365",
+ "id": 1471,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "22183:5:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "false"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 1469,
+ "name": "SignerAuthorization",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 97,
+ "src": "22123:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_struct$_SignerAuthorization_$97_storage_ptr_$",
+ "typeString": "type(struct Accounts.SignerAuthorization storage pointer)"
+ }
+ },
+ "id": 1472,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "structConstructorCall",
+ "lValueRequested": false,
+ "names": [
+ "started",
+ "completed"
+ ],
+ "nodeType": "FunctionCall",
+ "src": "22123:72:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_memory",
+ "typeString": "struct Accounts.SignerAuthorization memory"
+ }
+ },
+ "src": "22074:121:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage",
+ "typeString": "struct Accounts.SignerAuthorization storage ref"
+ }
+ },
+ "id": 1474,
+ "nodeType": "ExpressionStatement",
+ "src": "22074:121:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1476,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "22233:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1477,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "22233:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1478,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1435,
+ "src": "22245:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1479,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1437,
+ "src": "22253:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1475,
+ "name": "SignerAuthorizationStarted",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 211,
+ "src": "22206:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1480,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "22206:52:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1481,
+ "nodeType": "EmitStatement",
+ "src": "22201:57:1"
+ }
+ ]
+ },
+ "documentation": "@notice Begin the process of authorizing an address to sign on behalf of the account\n@param signer The address of the signing key to authorize.\n@param role The role to authorize signing for.",
+ "id": 1483,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "authorizeSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1438,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1435,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1483,
+ "src": "21822:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1434,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "21822:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1437,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1483,
+ "src": "21838:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1436,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "21838:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "21821:30:1"
+ },
+ "returnParameters": {
+ "id": 1439,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "21859:0:1"
+ },
+ "scope": 2783,
+ "src": "21797:466:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1552,
+ "nodeType": "Block",
+ "src": "22568:524:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1492,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1485,
+ "src": "22592:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1491,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "22582:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 1493,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "22582:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "556e6b6e6f776e206163636f756e74",
+ "id": 1494,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "22602:17:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ },
+ "value": "Unknown account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ }
+ ],
+ "id": 1490,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "22574:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1495,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "22574:46:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1496,
+ "nodeType": "ExpressionStatement",
+ "src": "22574:46:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 1507,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1499,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "22654:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1500,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "22654:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 1498,
+ "name": "isNotAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2579,
+ "src": "22641:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 1501,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "22641:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1503,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1485,
+ "src": "22708:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1504,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "22717:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1505,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "22717:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 1502,
+ "name": "isNotAuthorizedSignerForAnotherAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2638,
+ "src": "22669:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address,address) view returns (bool)"
+ }
+ },
+ "id": 1506,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "22669:59:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "22641:87:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "43616e6e6f742072652d617574686f72697a652061646472657373207369676e6572",
+ "id": 1508,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "22736:36:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_ceb9bc54b570b4de50c8c2ee45b626d76118b30832dc4b19d8f73d3a403d5cdd",
+ "typeString": "literal_string \"Cannot re-authorize address signer\""
+ },
+ "value": "Cannot re-authorize address signer"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_ceb9bc54b570b4de50c8c2ee45b626d76118b30832dc4b19d8f73d3a403d5cdd",
+ "typeString": "literal_string \"Cannot re-authorize address signer\""
+ }
+ ],
+ "id": 1497,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "22626:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1509,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "22626:152:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1510,
+ "nodeType": "ExpressionStatement",
+ "src": "22626:152:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 1522,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1512,
+ "name": "signerAuthorizations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 137,
+ "src": "22799:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))"
+ }
+ },
+ "id": 1514,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1513,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1485,
+ "src": "22820:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "22799:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))"
+ }
+ },
+ "id": 1516,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1515,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1487,
+ "src": "22829:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "22799:35:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$",
+ "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)"
+ }
+ },
+ "id": 1519,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1517,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "22835:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1518,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "22835:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "22799:47:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage",
+ "typeString": "struct Accounts.SignerAuthorization storage ref"
+ }
+ },
+ "id": 1520,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "started",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 94,
+ "src": "22799:55:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 1521,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "22858:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "src": "22799:63:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "5369676e657220617574686f72697a6174696f6e206e6f742073746172746564",
+ "id": 1523,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "22870:34:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_e2c62189369d8d497a257960930acc45dec84a751a5d021a9a6f4fbf997df4f7",
+ "typeString": "literal_string \"Signer authorization not started\""
+ },
+ "value": "Signer authorization not started"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_e2c62189369d8d497a257960930acc45dec84a751a5d021a9a6f4fbf997df4f7",
+ "typeString": "literal_string \"Signer authorization not started\""
+ }
+ ],
+ "id": 1511,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "22784:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1524,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "22784:126:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1525,
+ "nodeType": "ExpressionStatement",
+ "src": "22784:126:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1531,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1526,
+ "name": "authorizedBy",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 123,
+ "src": "22917:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ }
+ },
+ "id": 1529,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1527,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "22930:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1528,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "22930:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "22917:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 1530,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1485,
+ "src": "22944:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "22917:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1532,
+ "nodeType": "ExpressionStatement",
+ "src": "22917:34:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1543,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1533,
+ "name": "signerAuthorizations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 137,
+ "src": "22957:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))"
+ }
+ },
+ "id": 1538,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1534,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1485,
+ "src": "22978:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "22957:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))"
+ }
+ },
+ "id": 1539,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1535,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1487,
+ "src": "22987:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "22957:35:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$",
+ "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)"
+ }
+ },
+ "id": 1540,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1536,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "22993:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1537,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "22993:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "22957:47:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage",
+ "typeString": "struct Accounts.SignerAuthorization storage ref"
+ }
+ },
+ "id": 1541,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "completed",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 96,
+ "src": "22957:57:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 1542,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "23017:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "src": "22957:64:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 1544,
+ "nodeType": "ExpressionStatement",
+ "src": "22957:64:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1546,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1485,
+ "src": "23061:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1547,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "23070:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1548,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "23070:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1549,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1487,
+ "src": "23082:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1545,
+ "name": "SignerAuthorizationCompleted",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 219,
+ "src": "23032:28:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1550,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "23032:55:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1551,
+ "nodeType": "EmitStatement",
+ "src": "23027:60:1"
+ }
+ ]
+ },
+ "documentation": "@notice Finish the process of authorizing an address to sign on behalf of the account. \n@param account The address of account that authorized signing.\n@param role The role to finish authorizing for.",
+ "id": 1553,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "completeSignerAuthorization",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1488,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1485,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 1553,
+ "src": "22530:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1484,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "22530:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1487,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1553,
+ "src": "22547:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1486,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "22547:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "22529:31:1"
+ },
+ "returnParameters": {
+ "id": 1489,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "22568:0:1"
+ },
+ "scope": 2783,
+ "src": "22493:599:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1612,
+ "nodeType": "Block",
+ "src": "23477:381:1",
+ "statements": [
+ {
+ "assignments": [
+ 1565
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1565,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 1612,
+ "src": "23483:23:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 1564,
+ "name": "Account",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 110,
+ "src": "23483:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1569,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1566,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "23509:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 1568,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1567,
+ "name": "_account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1555,
+ "src": "23518:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "23509:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "23483:44:1"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 1578,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 1572,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1570,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1559,
+ "src": "23537:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1571,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "23545:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "23537:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 1577,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1573,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1565,
+ "src": "23564:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1574,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "23564:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1575,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "validator",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 89,
+ "src": "23564:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1576,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1557,
+ "src": "23593:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "23564:35:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "23537:62:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 1590,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 1584,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1582,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1559,
+ "src": "23637:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1583,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "23645:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "23637:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 1589,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1585,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1565,
+ "src": "23666:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1586,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "23666:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1587,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "attestation",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 91,
+ "src": "23666:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1588,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1557,
+ "src": "23697:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "23666:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "23637:66:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 1602,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 1596,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1594,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1559,
+ "src": "23741:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1595,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "23749:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "23741:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 1601,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1597,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1565,
+ "src": "23763:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1598,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "23763:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1599,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "vote",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 87,
+ "src": "23763:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1600,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1557,
+ "src": "23787:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "23763:30:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "23741:52:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "id": 1608,
+ "nodeType": "Block",
+ "src": "23827:27:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "66616c7365",
+ "id": 1606,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "23842:5:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "false"
+ },
+ "functionReturnParameters": 1563,
+ "id": 1607,
+ "nodeType": "Return",
+ "src": "23835:12:1"
+ }
+ ]
+ },
+ "id": 1609,
+ "nodeType": "IfStatement",
+ "src": "23737:117:1",
+ "trueBody": {
+ "id": 1605,
+ "nodeType": "Block",
+ "src": "23795:26:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 1603,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "23810:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 1563,
+ "id": 1604,
+ "nodeType": "Return",
+ "src": "23803:11:1"
+ }
+ ]
+ }
+ },
+ "id": 1610,
+ "nodeType": "IfStatement",
+ "src": "23633:221:1",
+ "trueBody": {
+ "id": 1593,
+ "nodeType": "Block",
+ "src": "23705:26:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 1591,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "23720:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 1563,
+ "id": 1592,
+ "nodeType": "Return",
+ "src": "23713:11:1"
+ }
+ ]
+ }
+ },
+ "id": 1611,
+ "nodeType": "IfStatement",
+ "src": "23533:321:1",
+ "trueBody": {
+ "id": 1581,
+ "nodeType": "Block",
+ "src": "23601:26:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 1579,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "23616:4:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 1563,
+ "id": 1580,
+ "nodeType": "Return",
+ "src": "23609:11:1"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "documentation": "@notice Whether or not the signer has been registered as the legacy signer for role\n@param _account The address of account that authorized signing.\n@param signer The address of the signer.\n@param role The role that has been authorized.",
+ "id": 1613,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isLegacySigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1560,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1555,
+ "name": "_account",
+ "nodeType": "VariableDeclaration",
+ "scope": 1613,
+ "src": "23388:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1554,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "23388:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1557,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1613,
+ "src": "23406:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1556,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "23406:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1559,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1613,
+ "src": "23422:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1558,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "23422:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "23387:48:1"
+ },
+ "returnParameters": {
+ "id": 1563,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1562,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1613,
+ "src": "23469:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 1561,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "23469:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "23468:6:1"
+ },
+ "scope": 2783,
+ "src": "23364:494:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1632,
+ "nodeType": "Block",
+ "src": "24243:57:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 1630,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1624,
+ "name": "defaultSigners",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 129,
+ "src": "24256:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => address))"
+ }
+ },
+ "id": 1626,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1625,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1615,
+ "src": "24271:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "24256:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 1628,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1627,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1619,
+ "src": "24280:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "24256:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1629,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1617,
+ "src": "24289:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "24256:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 1623,
+ "id": 1631,
+ "nodeType": "Return",
+ "src": "24249:46:1"
+ }
+ ]
+ },
+ "documentation": "@notice Whether or not the signer has been registered as the default signer for role\n@param account The address of account that authorized signing.\n@param signer The address of the signer.\n@param role The role that has been authorized.",
+ "id": 1633,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isDefaultSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1620,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1615,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 1633,
+ "src": "24155:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1614,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "24155:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1617,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1633,
+ "src": "24172:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1616,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "24172:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1619,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1633,
+ "src": "24188:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1618,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "24188:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "24154:47:1"
+ },
+ "returnParameters": {
+ "id": 1623,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1622,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1633,
+ "src": "24235:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 1621,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "24235:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "24234:6:1"
+ },
+ "scope": 2783,
+ "src": "24130:170:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1659,
+ "nodeType": "Block",
+ "src": "24684:139:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "condition": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1645,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1639,
+ "src": "24716:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1644,
+ "name": "isLegacyRole",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2086,
+ "src": "24703:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (bytes32) pure returns (bool)"
+ }
+ },
+ "id": 1646,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "24703:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1653,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1635,
+ "src": "24796:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1654,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1637,
+ "src": "24805:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1655,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1639,
+ "src": "24813:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1652,
+ "name": "isDefaultSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1633,
+ "src": "24780:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 1656,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "24780:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 1657,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "Conditional",
+ "src": "24703:115:1",
+ "trueExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1648,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1635,
+ "src": "24747:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1649,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1637,
+ "src": "24756:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1650,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1639,
+ "src": "24764:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1647,
+ "name": "isLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1613,
+ "src": "24732:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 1651,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "24732:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 1643,
+ "id": 1658,
+ "nodeType": "Return",
+ "src": "24690:128:1"
+ }
+ ]
+ },
+ "documentation": "@notice Whether or not the signer has been registered as an indexed signer for role\n@param account The address of account that authorized signing.\n@param signer The address of the signer.\n@param role The role that has been authorized.",
+ "id": 1660,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isIndexedSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1640,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1635,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 1660,
+ "src": "24596:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1634,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "24596:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1637,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1660,
+ "src": "24613:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1636,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "24613:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1639,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1660,
+ "src": "24629:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1638,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "24629:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "24595:47:1"
+ },
+ "returnParameters": {
+ "id": 1643,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1642,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1660,
+ "src": "24676:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 1641,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "24676:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "24675:6:1"
+ },
+ "scope": 2783,
+ "src": "24571:252:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1693,
+ "nodeType": "Block",
+ "src": "25177:161:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 1691,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1672,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1662,
+ "src": "25211:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1673,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1664,
+ "src": "25220:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1674,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1666,
+ "src": "25228:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1671,
+ "name": "isLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1613,
+ "src": "25196:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 1675,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "25196:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 1689,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1676,
+ "name": "signerAuthorizations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 137,
+ "src": "25244:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))"
+ }
+ },
+ "id": 1678,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1677,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1662,
+ "src": "25265:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "25244:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))"
+ }
+ },
+ "id": 1680,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1679,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1666,
+ "src": "25274:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "25244:35:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$",
+ "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)"
+ }
+ },
+ "id": 1682,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1681,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1664,
+ "src": "25280:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "25244:43:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage",
+ "typeString": "struct Accounts.SignerAuthorization storage ref"
+ }
+ },
+ "id": 1683,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "completed",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 96,
+ "src": "25244:53:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 1688,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1684,
+ "name": "authorizedBy",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 123,
+ "src": "25301:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ }
+ },
+ "id": 1686,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1685,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1664,
+ "src": "25314:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "25301:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1687,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1662,
+ "src": "25325:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "25301:31:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "25244:88:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 1690,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "25243:90:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "25196:137:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 1670,
+ "id": 1692,
+ "nodeType": "Return",
+ "src": "25183:150:1"
+ }
+ ]
+ },
+ "documentation": "@notice Whether or not the signer has been registered as a signer for role\n@param account The address of account that authorized signing.\n@param signer The address of the signer.\n@param role The role that has been authorized.",
+ "id": 1694,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1667,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1662,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 1694,
+ "src": "25103:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1661,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "25103:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1664,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1694,
+ "src": "25120:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1663,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "25120:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1666,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1694,
+ "src": "25136:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1665,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "25136:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "25102:47:1"
+ },
+ "returnParameters": {
+ "id": 1670,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1669,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1694,
+ "src": "25171:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 1668,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "25171:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "25170:6:1"
+ },
+ "scope": 2783,
+ "src": "25085:253:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1726,
+ "nodeType": "Block",
+ "src": "25508:168:1",
+ "statements": [
+ {
+ "assignments": [
+ 1700
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1700,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1726,
+ "src": "25514:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1699,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "25514:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1707,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1701,
+ "name": "defaultSigners",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 129,
+ "src": "25531:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => address))"
+ }
+ },
+ "id": 1704,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1702,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "25546:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1703,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "25546:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "25531:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 1706,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1705,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1696,
+ "src": "25558:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "25531:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "25514:49:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1717,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1708,
+ "name": "defaultSigners",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 129,
+ "src": "25569:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => address))"
+ }
+ },
+ "id": 1712,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1709,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "25584:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1710,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "25584:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "25569:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 1713,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1711,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1696,
+ "src": "25596:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "25569:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1715,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "25612:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 1714,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "25604:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1716,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "25604:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "25569:45:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1718,
+ "nodeType": "ExpressionStatement",
+ "src": "25569:45:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1720,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "25646:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1721,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "25646:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1722,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1700,
+ "src": "25658:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1723,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1696,
+ "src": "25666:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1719,
+ "name": "DefaultSignerRemoved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 269,
+ "src": "25625:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1724,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "25625:46:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1725,
+ "nodeType": "EmitStatement",
+ "src": "25620:51:1"
+ }
+ ]
+ },
+ "documentation": "@notice Removes the signer for a default role.\n@param role The role that has been authorized.",
+ "id": 1727,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "removeDefaultSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1697,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1696,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1727,
+ "src": "25487:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1695,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "25487:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "25486:14:1"
+ },
+ "returnParameters": {
+ "id": 1698,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "25508:0:1"
+ },
+ "scope": 2783,
+ "src": "25458:218:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1812,
+ "nodeType": "Block",
+ "src": "25967:514:1",
+ "statements": [
+ {
+ "assignments": [
+ 1733
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1733,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 1812,
+ "src": "25973:23:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 1732,
+ "name": "Account",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 110,
+ "src": "25973:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1738,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1734,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "25999:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 1737,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1735,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "26008:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1736,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "26008:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "25999:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "25973:46:1"
+ },
+ {
+ "assignments": [
+ 1740
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1740,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1812,
+ "src": "26026:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1739,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "26026:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1741,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "26026:14:1"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 1744,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1742,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1729,
+ "src": "26050:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1743,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "26058:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "26050:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 1764,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1762,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1729,
+ "src": "26180:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1763,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "26188:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "26180:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 1784,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1782,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1729,
+ "src": "26316:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 1783,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "26324:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "26316:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 1802,
+ "nodeType": "IfStatement",
+ "src": "26312:109:1",
+ "trueBody": {
+ "id": 1801,
+ "nodeType": "Block",
+ "src": "26336:85:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1789,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1785,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1740,
+ "src": "26344:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1786,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1733,
+ "src": "26353:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1787,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "26353:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1788,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "vote",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 87,
+ "src": "26353:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "26344:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1790,
+ "nodeType": "ExpressionStatement",
+ "src": "26344:29:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1799,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1791,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1733,
+ "src": "26381:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1794,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "26381:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1795,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "vote",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 87,
+ "src": "26381:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1797,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "26412:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 1796,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "26404:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1798,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "26404:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "26381:33:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1800,
+ "nodeType": "ExpressionStatement",
+ "src": "26381:33:1"
+ }
+ ]
+ }
+ },
+ "id": 1803,
+ "nodeType": "IfStatement",
+ "src": "26176:245:1",
+ "trueBody": {
+ "id": 1781,
+ "nodeType": "Block",
+ "src": "26207:99:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1769,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1765,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1740,
+ "src": "26215:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1766,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1733,
+ "src": "26224:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1767,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "26224:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1768,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "attestation",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 91,
+ "src": "26224:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "26215:36:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1770,
+ "nodeType": "ExpressionStatement",
+ "src": "26215:36:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1779,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1771,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1733,
+ "src": "26259:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1774,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "26259:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1775,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "attestation",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 91,
+ "src": "26259:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1777,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "26297:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 1776,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "26289:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1778,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "26289:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "26259:40:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1780,
+ "nodeType": "ExpressionStatement",
+ "src": "26259:40:1"
+ }
+ ]
+ }
+ },
+ "id": 1804,
+ "nodeType": "IfStatement",
+ "src": "26046:375:1",
+ "trueBody": {
+ "id": 1761,
+ "nodeType": "Block",
+ "src": "26075:95:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1749,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 1745,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1740,
+ "src": "26083:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1746,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1733,
+ "src": "26092:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1747,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "26092:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1748,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "validator",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 89,
+ "src": "26092:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "26083:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1750,
+ "nodeType": "ExpressionStatement",
+ "src": "26083:34:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1759,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1751,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1733,
+ "src": "26125:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 1754,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "26125:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 1755,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "validator",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 89,
+ "src": "26125:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1757,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "26161:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 1756,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "26153:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1758,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "26153:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "26125:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 1760,
+ "nodeType": "ExpressionStatement",
+ "src": "26125:38:1"
+ }
+ ]
+ }
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1806,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "26451:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1807,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "26451:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1808,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1740,
+ "src": "26463:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1809,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1729,
+ "src": "26471:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1805,
+ "name": "LegacySignerRemoved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 285,
+ "src": "26431:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1810,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "26431:45:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1811,
+ "nodeType": "EmitStatement",
+ "src": "26426:50:1"
+ }
+ ]
+ },
+ "documentation": "@notice Remove one of the Validator, Attestation or \nVote signers from an account. Should only be called from\nmethods that check the role is a legacy signer.\n@param role The role that has been authorized.",
+ "id": 1813,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "removeLegacySigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1730,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1729,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1813,
+ "src": "25945:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1728,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "25945:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "25944:14:1"
+ },
+ "returnParameters": {
+ "id": 1731,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "25967:0:1"
+ },
+ "scope": 2783,
+ "src": "25917:564:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "private"
+ },
+ {
+ "body": {
+ "id": 1844,
+ "nodeType": "Block",
+ "src": "26679:205:1",
+ "statements": [
+ {
+ "assignments": [
+ 1819
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1819,
+ "name": "oldSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 1844,
+ "src": "26685:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1818,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "26685:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1825,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1821,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "26722:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1822,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "26722:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1823,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1815,
+ "src": "26734:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1820,
+ "name": "getIndexedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2204,
+ "src": "26705:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 1824,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "26705:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "26685:54:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "condition": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1827,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1815,
+ "src": "26758:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1826,
+ "name": "isLegacyRole",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2086,
+ "src": "26745:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (bytes32) pure returns (bool)"
+ }
+ },
+ "id": 1828,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "26745:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1833,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1815,
+ "src": "26813:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1832,
+ "name": "removeDefaultSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1727,
+ "src": "26793:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
+ "typeString": "function (bytes32)"
+ }
+ },
+ "id": 1834,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "26793:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1835,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "Conditional",
+ "src": "26745:73:1",
+ "trueExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1830,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1815,
+ "src": "26785:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1829,
+ "name": "removeLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1813,
+ "src": "26766:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
+ "typeString": "function (bytes32)"
+ }
+ },
+ "id": 1831,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "26766:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1836,
+ "nodeType": "ExpressionStatement",
+ "src": "26745:73:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1838,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "26851:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1839,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "26851:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1840,
+ "name": "oldSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1819,
+ "src": "26863:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1841,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1815,
+ "src": "26874:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1837,
+ "name": "IndexedSignerRemoved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 253,
+ "src": "26830:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1842,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "26830:49:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1843,
+ "nodeType": "EmitStatement",
+ "src": "26825:54:1"
+ }
+ ]
+ },
+ "documentation": "@notice Removes the currently authorized and indexed signer \nfor a specific role\n@param role The role of the signer.",
+ "id": 1845,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "removeIndexedSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1816,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1815,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1845,
+ "src": "26658:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1814,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "26658:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "26657:14:1"
+ },
+ "returnParameters": {
+ "id": 1817,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "26679:0:1"
+ },
+ "scope": 2783,
+ "src": "26629:255:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1881,
+ "nodeType": "Block",
+ "src": "27187:207:1",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1853,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "27213:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1854,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "27213:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1855,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1847,
+ "src": "27225:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1856,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1849,
+ "src": "27233:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1852,
+ "name": "isIndexedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1660,
+ "src": "27197:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 1857,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "27197:41:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 1863,
+ "nodeType": "IfStatement",
+ "src": "27193:87:1",
+ "trueBody": {
+ "id": 1862,
+ "nodeType": "Block",
+ "src": "27240:40:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1859,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1849,
+ "src": "27268:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1858,
+ "name": "removeIndexedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1845,
+ "src": "27248:19:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
+ "typeString": "function (bytes32)"
+ }
+ },
+ "id": 1860,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "27248:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1861,
+ "nodeType": "ExpressionStatement",
+ "src": "27248:25:1"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1872,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "delete",
+ "prefix": true,
+ "src": "27286:53:1",
+ "subExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1864,
+ "name": "signerAuthorizations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 137,
+ "src": "27293:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref)))"
+ }
+ },
+ "id": 1867,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1865,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "27314:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1866,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "27314:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "27293:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct Accounts.SignerAuthorization storage ref))"
+ }
+ },
+ "id": 1869,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1868,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1849,
+ "src": "27326:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "27293:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_SignerAuthorization_$97_storage_$",
+ "typeString": "mapping(address => struct Accounts.SignerAuthorization storage ref)"
+ }
+ },
+ "id": 1871,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1870,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1847,
+ "src": "27332:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "27293:46:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_SignerAuthorization_$97_storage",
+ "typeString": "struct Accounts.SignerAuthorization storage ref"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1873,
+ "nodeType": "ExpressionStatement",
+ "src": "27286:53:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1875,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "27364:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1876,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "27364:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1877,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1847,
+ "src": "27376:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1878,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1849,
+ "src": "27384:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1874,
+ "name": "SignerRemoved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 293,
+ "src": "27350:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,address,bytes32)"
+ }
+ },
+ "id": 1879,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "27350:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1880,
+ "nodeType": "EmitStatement",
+ "src": "27345:44:1"
+ }
+ ]
+ },
+ "documentation": "@notice Removes the currently authorized signer for a specific role and \nif the signer is indexed, remove that as well.\n@param signer The address of the signer.\n@param role The role that has been authorized.",
+ "id": 1882,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "removeSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1850,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1847,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1882,
+ "src": "27150:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1846,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "27150:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1849,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1882,
+ "src": "27166:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1848,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "27166:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "27149:30:1"
+ },
+ "returnParameters": {
+ "id": 1851,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "27187:0:1"
+ },
+ "scope": 2783,
+ "src": "27128:266:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1904,
+ "nodeType": "Block",
+ "src": "27600:153:1",
+ "statements": [
+ {
+ "assignments": [
+ 1886
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1886,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1904,
+ "src": "27606:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1885,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "27606:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1892,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1888,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "27639:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1889,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "27639:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1890,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "27651:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1887,
+ "name": "getLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2154,
+ "src": "27623:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 1891,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "27623:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "27606:56:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1894,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1886,
+ "src": "27681:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1895,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "27689:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1893,
+ "name": "removeSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1882,
+ "src": "27668:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32)"
+ }
+ },
+ "id": 1896,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "27668:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1897,
+ "nodeType": "ExpressionStatement",
+ "src": "27668:32:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1899,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "27729:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1900,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "27729:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1901,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1886,
+ "src": "27741:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1898,
+ "name": "VoteSignerRemoved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 231,
+ "src": "27711:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1902,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "27711:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1903,
+ "nodeType": "EmitStatement",
+ "src": "27706:42:1"
+ }
+ ]
+ },
+ "documentation": "@notice Removes the currently authorized vote signer for the account.\nNote that the signers cannot be reauthorized after they have been removed.",
+ "id": 1905,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "removeVoteSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1883,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "27590:2:1"
+ },
+ "returnParameters": {
+ "id": 1884,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "27600:0:1"
+ },
+ "scope": 2783,
+ "src": "27565:188:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1927,
+ "nodeType": "Block",
+ "src": "27968:168:1",
+ "statements": [
+ {
+ "assignments": [
+ 1909
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1909,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1927,
+ "src": "27974:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1908,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "27974:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1915,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1911,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "28007:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1912,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "28007:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1913,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "28019:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1910,
+ "name": "getLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2154,
+ "src": "27991:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 1914,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "27991:44:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "27974:61:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1917,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1909,
+ "src": "28054:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1918,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "28062:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1916,
+ "name": "removeSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1882,
+ "src": "28041:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32)"
+ }
+ },
+ "id": 1919,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "28041:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1920,
+ "nodeType": "ExpressionStatement",
+ "src": "28041:37:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1922,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "28112:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1923,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "28112:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1924,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1909,
+ "src": "28124:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1921,
+ "name": "ValidatorSignerRemoved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 237,
+ "src": "28089:22:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1925,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "28089:42:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1926,
+ "nodeType": "EmitStatement",
+ "src": "28084:47:1"
+ }
+ ]
+ },
+ "documentation": "@notice Removes the currently authorized validator signer for the account\nNote that the signers cannot be reauthorized after they have been removed.",
+ "id": 1928,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "removeValidatorSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1906,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "27958:2:1"
+ },
+ "returnParameters": {
+ "id": 1907,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "27968:0:1"
+ },
+ "scope": 2783,
+ "src": "27928:208:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1950,
+ "nodeType": "Block",
+ "src": "28355:174:1",
+ "statements": [
+ {
+ "assignments": [
+ 1932
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1932,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1950,
+ "src": "28361:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1931,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "28361:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1938,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1934,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "28394:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1935,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "28394:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1936,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "28406:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1933,
+ "name": "getLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2154,
+ "src": "28378:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 1937,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "28378:46:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "28361:63:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1940,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1932,
+ "src": "28443:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1941,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "28451:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1939,
+ "name": "removeSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1882,
+ "src": "28430:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$__$",
+ "typeString": "function (address,bytes32)"
+ }
+ },
+ "id": 1942,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "28430:39:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1943,
+ "nodeType": "ExpressionStatement",
+ "src": "28430:39:1"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 1945,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "28505:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 1946,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "28505:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1947,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1932,
+ "src": "28517:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1944,
+ "name": "AttestationSignerRemoved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 225,
+ "src": "28480:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (address,address)"
+ }
+ },
+ "id": 1948,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "28480:44:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1949,
+ "nodeType": "EmitStatement",
+ "src": "28475:49:1"
+ }
+ ]
+ },
+ "documentation": "@notice Removes the currently authorized attestation signer for the account\nNote that the signers cannot be reauthorized after they have been removed.",
+ "id": 1951,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "removeAttestationSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1929,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "28345:2:1"
+ },
+ "returnParameters": {
+ "id": 1930,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "28355:0:1"
+ },
+ "scope": 2783,
+ "src": "28313:216:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 1993,
+ "nodeType": "Block",
+ "src": "28628:269:1",
+ "statements": [
+ {
+ "assignments": [
+ 1961
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 1961,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 1993,
+ "src": "28634:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1960,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "28634:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 1965,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 1962,
+ "name": "authorizedBy",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 123,
+ "src": "28652:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ }
+ },
+ "id": 1964,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 1963,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1953,
+ "src": "28665:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "28652:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "28634:38:1"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 1970,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 1966,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1961,
+ "src": "28682:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 1968,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "28701:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 1967,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "28693:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 1969,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "28693:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "28682:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 1983,
+ "nodeType": "IfStatement",
+ "src": "28678:145:1",
+ "trueBody": {
+ "id": 1982,
+ "nodeType": "Block",
+ "src": "28705:118:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1973,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1961,
+ "src": "28730:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1974,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1953,
+ "src": "28739:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 1975,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1955,
+ "src": "28747:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 1972,
+ "name": "isSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1694,
+ "src": "28721:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 1976,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "28721:31:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "6e6f742061637469766520617574686f72697a6564207369676e657220666f7220726f6c65",
+ "id": 1977,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "28754:39:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_d83c0b17424b2b763298cadca0296afade349b0e1c9fb38375ada393eb382682",
+ "typeString": "literal_string \"not active authorized signer for role\""
+ },
+ "value": "not active authorized signer for role"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_d83c0b17424b2b763298cadca0296afade349b0e1c9fb38375ada393eb382682",
+ "typeString": "literal_string \"not active authorized signer for role\""
+ }
+ ],
+ "id": 1971,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "28713:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1978,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "28713:81:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1979,
+ "nodeType": "ExpressionStatement",
+ "src": "28713:81:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1980,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1961,
+ "src": "28809:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 1959,
+ "id": 1981,
+ "nodeType": "Return",
+ "src": "28802:14:1"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 1986,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1953,
+ "src": "28847:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 1985,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "28837:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 1987,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "28837:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "6e6f7420616e206163636f756e74",
+ "id": 1988,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "28856:16:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_659fe7406443476bd87828d143e98096817552fd61e504905c71382e9d8ad484",
+ "typeString": "literal_string \"not an account\""
+ },
+ "value": "not an account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_659fe7406443476bd87828d143e98096817552fd61e504905c71382e9d8ad484",
+ "typeString": "literal_string \"not an account\""
+ }
+ ],
+ "id": 1984,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "28829:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 1989,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "28829:44:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 1990,
+ "nodeType": "ExpressionStatement",
+ "src": "28829:44:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 1991,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1953,
+ "src": "28886:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 1959,
+ "id": 1992,
+ "nodeType": "Return",
+ "src": "28879:13:1"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 1994,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "signerToAccountWithRole",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1956,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1953,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 1994,
+ "src": "28566:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1952,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "28566:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 1955,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 1994,
+ "src": "28582:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 1954,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "28582:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "28565:30:1"
+ },
+ "returnParameters": {
+ "id": 1959,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1958,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 1994,
+ "src": "28619:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1957,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "28619:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "28618:9:1"
+ },
+ "scope": 2783,
+ "src": "28533:364:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 2006,
+ "nodeType": "Block",
+ "src": "29277:68:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2002,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1996,
+ "src": "29314:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2003,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "29322:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2001,
+ "name": "signerToAccountWithRole",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1994,
+ "src": "29290:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 2004,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "29290:50:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2000,
+ "id": 2005,
+ "nodeType": "Return",
+ "src": "29283:57:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the account associated with `signer`.\n@param signer The address of the account or currently authorized attestation signer.\n@dev Fails if the `signer` is not an account or currently authorized attestation signer.\n@return The associated account.",
+ "id": 2007,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "attestationSignerToAccount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 1997,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1996,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2007,
+ "src": "29229:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1995,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "29229:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "29228:16:1"
+ },
+ "returnParameters": {
+ "id": 2000,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 1999,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2007,
+ "src": "29268:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 1998,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "29268:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "29267:9:1"
+ },
+ "scope": 2783,
+ "src": "29193:152:1",
+ "stateMutability": "view",
+ "superFunction": 9126,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2019,
+ "nodeType": "Block",
+ "src": "29709:66:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2015,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2009,
+ "src": "29746:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2016,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "29754:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2014,
+ "name": "signerToAccountWithRole",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1994,
+ "src": "29722:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 2017,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "29722:48:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2013,
+ "id": 2018,
+ "nodeType": "Return",
+ "src": "29715:55:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the account associated with `signer`.\n@param signer The address of an account or currently authorized validator signer.\n@dev Fails if the `signer` is not an account or currently authorized validator.\n@return The associated account.",
+ "id": 2020,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "validatorSignerToAccount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2010,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2009,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2020,
+ "src": "29663:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2008,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "29663:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "29662:16:1"
+ },
+ "returnParameters": {
+ "id": 2013,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2012,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2020,
+ "src": "29700:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2011,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "29700:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "29699:9:1"
+ },
+ "scope": 2783,
+ "src": "29629:146:1",
+ "stateMutability": "view",
+ "superFunction": 9119,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2032,
+ "nodeType": "Block",
+ "src": "30134:61:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2028,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2022,
+ "src": "30171:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2029,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "30179:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2027,
+ "name": "signerToAccountWithRole",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 1994,
+ "src": "30147:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 2030,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "30147:43:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2026,
+ "id": 2031,
+ "nodeType": "Return",
+ "src": "30140:50:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the account associated with `signer`.\n@param signer The address of the account or currently authorized vote signer.\n@dev Fails if the `signer` is not an account or currently authorized vote signer.\n@return The associated account.",
+ "id": 2033,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "voteSignerToAccount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2023,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2022,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2033,
+ "src": "30086:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2021,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "30086:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "30085:16:1"
+ },
+ "returnParameters": {
+ "id": 2026,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2025,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2033,
+ "src": "30125:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2024,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "30125:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "30124:9:1"
+ },
+ "scope": 2783,
+ "src": "30057:138:1",
+ "stateMutability": "view",
+ "superFunction": 9112,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2065,
+ "nodeType": "Block",
+ "src": "30542:229:1",
+ "statements": [
+ {
+ "assignments": [
+ 2041
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2041,
+ "name": "authorizingAccount",
+ "nodeType": "VariableDeclaration",
+ "scope": 2065,
+ "src": "30548:26:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2040,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "30548:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2045,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2042,
+ "name": "authorizedBy",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 123,
+ "src": "30577:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ }
+ },
+ "id": 2044,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2043,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2035,
+ "src": "30590:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "30577:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "30548:49:1"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2050,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2046,
+ "name": "authorizingAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2041,
+ "src": "30607:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2048,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "30637:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 2047,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "30629:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 2049,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "30629:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "30607:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "id": 2063,
+ "nodeType": "Block",
+ "src": "30687:80:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2056,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2035,
+ "src": "30713:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 2055,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "30703:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 2057,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "30703:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4e6f7420616e206163636f756e74",
+ "id": 2058,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "30722:16:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3",
+ "typeString": "literal_string \"Not an account\""
+ },
+ "value": "Not an account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_64561f7b9be9f145dfc2fb816ac2dd7ddabacecaa33714174c4a1199714890a3",
+ "typeString": "literal_string \"Not an account\""
+ }
+ ],
+ "id": 2054,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "30695:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 2059,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "30695:44:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 2060,
+ "nodeType": "ExpressionStatement",
+ "src": "30695:44:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2061,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2035,
+ "src": "30754:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2039,
+ "id": 2062,
+ "nodeType": "Return",
+ "src": "30747:13:1"
+ }
+ ]
+ },
+ "id": 2064,
+ "nodeType": "IfStatement",
+ "src": "30603:164:1",
+ "trueBody": {
+ "id": 2053,
+ "nodeType": "Block",
+ "src": "30641:40:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2051,
+ "name": "authorizingAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2041,
+ "src": "30656:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2039,
+ "id": 2052,
+ "nodeType": "Return",
+ "src": "30649:25:1"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "documentation": "@notice Returns the account associated with `signer`.\n@param signer The address of the account or previously authorized signer.\n@dev Fails if the `signer` is not an account or previously authorized signer.\n@return The associated account.",
+ "id": 2066,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "signerToAccount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2036,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2035,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2066,
+ "src": "30494:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2034,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "30494:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "30493:16:1"
+ },
+ "returnParameters": {
+ "id": 2039,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2038,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2066,
+ "src": "30533:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2037,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "30533:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "30532:9:1"
+ },
+ "scope": 2783,
+ "src": "30469:302:1",
+ "stateMutability": "view",
+ "superFunction": 9133,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2085,
+ "nodeType": "Block",
+ "src": "30963:92:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 2083,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 2079,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 2075,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2073,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2068,
+ "src": "30976:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2074,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "30984:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "30976:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 2078,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2076,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2068,
+ "src": "30998:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2077,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "31006:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "30998:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "30976:45:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 2082,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2080,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2068,
+ "src": "31025:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2081,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "31033:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "31025:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "30976:74:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2072,
+ "id": 2084,
+ "nodeType": "Return",
+ "src": "30969:81:1"
+ }
+ ]
+ },
+ "documentation": "@notice Checks whether the role is one of Vote, Validator or Attestation\n@param role The role to check",
+ "id": 2086,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isLegacyRole",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2069,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2068,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 2086,
+ "src": "30922:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2067,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "30922:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "30921:14:1"
+ },
+ "returnParameters": {
+ "id": 2072,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2071,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2086,
+ "src": "30957:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2070,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "30957:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "30956:6:1"
+ },
+ "scope": 2783,
+ "src": "30900:155:1",
+ "stateMutability": "pure",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2153,
+ "nodeType": "Block",
+ "src": "31396:439:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2097,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2090,
+ "src": "31423:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2096,
+ "name": "isLegacyRole",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2086,
+ "src": "31410:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (bytes32) pure returns (bool)"
+ }
+ },
+ "id": 2098,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "31410:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "526f6c65206973206e6f742061206c6567616379207369676e6572",
+ "id": 2099,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "31430:29:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_d1382570bd35150f75e8fed125d4247737d7dd22bdbd72e789e6f21cc9b78de1",
+ "typeString": "literal_string \"Role is not a legacy signer\""
+ },
+ "value": "Role is not a legacy signer"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_d1382570bd35150f75e8fed125d4247737d7dd22bdbd72e789e6f21cc9b78de1",
+ "typeString": "literal_string \"Role is not a legacy signer\""
+ }
+ ],
+ "id": 2095,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "31402:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 2100,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "31402:58:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 2101,
+ "nodeType": "ExpressionStatement",
+ "src": "31402:58:1"
+ },
+ {
+ "assignments": [
+ 2103
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2103,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2153,
+ "src": "31467:23:1",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 2102,
+ "name": "Account",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 110,
+ "src": "31467:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2107,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2104,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "31493:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 2106,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2105,
+ "name": "_account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2088,
+ "src": "31502:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "31493:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "31467:44:1"
+ },
+ {
+ "assignments": [
+ 2109
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2109,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2153,
+ "src": "31517:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2108,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "31517:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2110,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "31517:14:1"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 2113,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2111,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2090,
+ "src": "31541:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2112,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "31549:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "31541:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 2123,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2121,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2090,
+ "src": "31625:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2122,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "31633:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "31625:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 2133,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2131,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2090,
+ "src": "31713:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2132,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "31721:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "31713:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 2141,
+ "nodeType": "IfStatement",
+ "src": "31709:68:1",
+ "trueBody": {
+ "id": 2140,
+ "nodeType": "Block",
+ "src": "31733:44:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2138,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 2134,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2109,
+ "src": "31741:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2135,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2103,
+ "src": "31750:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 2136,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "31750:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 2137,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "vote",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 87,
+ "src": "31750:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "31741:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 2139,
+ "nodeType": "ExpressionStatement",
+ "src": "31741:29:1"
+ }
+ ]
+ }
+ },
+ "id": 2142,
+ "nodeType": "IfStatement",
+ "src": "31621:156:1",
+ "trueBody": {
+ "id": 2130,
+ "nodeType": "Block",
+ "src": "31652:51:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2128,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 2124,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2109,
+ "src": "31660:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2125,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2103,
+ "src": "31669:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 2126,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "31669:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 2127,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "attestation",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 91,
+ "src": "31669:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "31660:36:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 2129,
+ "nodeType": "ExpressionStatement",
+ "src": "31660:36:1"
+ }
+ ]
+ }
+ },
+ "id": 2143,
+ "nodeType": "IfStatement",
+ "src": "31537:240:1",
+ "trueBody": {
+ "id": 2120,
+ "nodeType": "Block",
+ "src": "31566:49:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2118,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 2114,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2109,
+ "src": "31574:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2115,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2103,
+ "src": "31583:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage_ptr",
+ "typeString": "struct Accounts.Account storage pointer"
+ }
+ },
+ "id": 2116,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signers",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 101,
+ "src": "31583:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Signers_$92_storage",
+ "typeString": "struct Accounts.Signers storage ref"
+ }
+ },
+ "id": 2117,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "validator",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 89,
+ "src": "31583:25:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "31574:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 2119,
+ "nodeType": "ExpressionStatement",
+ "src": "31574:34:1"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2148,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2144,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2109,
+ "src": "31790:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2146,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "31808:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 2145,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "31800:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 2147,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "31800:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "31790:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseExpression": {
+ "argumentTypes": null,
+ "id": 2150,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2109,
+ "src": "31824:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 2151,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "Conditional",
+ "src": "31790:40:1",
+ "trueExpression": {
+ "argumentTypes": null,
+ "id": 2149,
+ "name": "_account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2088,
+ "src": "31813:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2094,
+ "id": 2152,
+ "nodeType": "Return",
+ "src": "31783:47:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the legacy signer for the specified account and \nrole. If no signer has been specified it will return the account itself.\n@param _account The address of the account.\n@param role The role of the signer.",
+ "id": 2154,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getLegacySigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2091,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2088,
+ "name": "_account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2154,
+ "src": "31334:16:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2087,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "31334:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2090,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 2154,
+ "src": "31352:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2089,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "31352:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "31333:32:1"
+ },
+ "returnParameters": {
+ "id": 2094,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2093,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2154,
+ "src": "31387:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2092,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "31387:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "31386:9:1"
+ },
+ "scope": 2783,
+ "src": "31309:526:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2180,
+ "nodeType": "Block",
+ "src": "32176:130:1",
+ "statements": [
+ {
+ "assignments": [
+ 2164
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2164,
+ "name": "defaultSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 2180,
+ "src": "32182:21:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2163,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "32182:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2170,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2165,
+ "name": "defaultSigners",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 129,
+ "src": "32206:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_address_$_$",
+ "typeString": "mapping(address => mapping(bytes32 => address))"
+ }
+ },
+ "id": 2167,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2166,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2156,
+ "src": "32221:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "32206:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 2169,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2168,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2158,
+ "src": "32230:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "32206:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "32182:53:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2175,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2171,
+ "name": "defaultSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2164,
+ "src": "32248:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2173,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "32273:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 2172,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "32265:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 2174,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "32265:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "32248:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseExpression": {
+ "argumentTypes": null,
+ "id": 2177,
+ "name": "defaultSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2164,
+ "src": "32288:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 2178,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "Conditional",
+ "src": "32248:53:1",
+ "trueExpression": {
+ "argumentTypes": null,
+ "id": 2176,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2156,
+ "src": "32278:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2162,
+ "id": 2179,
+ "nodeType": "Return",
+ "src": "32241:60:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the default signer for the specified account and \nrole. If no signer has been specified it will return the account itself.\n@param account The address of the account.\n@param role The role of the signer.",
+ "id": 2181,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getDefaultSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2159,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2156,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2181,
+ "src": "32115:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2155,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "32115:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2158,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 2181,
+ "src": "32132:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2157,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "32132:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "32114:31:1"
+ },
+ "returnParameters": {
+ "id": 2162,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2161,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2181,
+ "src": "32167:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2160,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "32167:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "32166:9:1"
+ },
+ "scope": 2783,
+ "src": "32089:217:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2203,
+ "nodeType": "Block",
+ "src": "32647:103:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "condition": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2191,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2185,
+ "src": "32673:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2190,
+ "name": "isLegacyRole",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2086,
+ "src": "32660:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (bytes32) pure returns (bool)"
+ }
+ },
+ "id": 2192,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "32660:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2198,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2183,
+ "src": "32731:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2199,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2185,
+ "src": "32740:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2197,
+ "name": "getDefaultSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2181,
+ "src": "32714:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 2200,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "32714:31:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 2201,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "Conditional",
+ "src": "32660:85:1",
+ "trueExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2194,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2183,
+ "src": "32697:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2195,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2185,
+ "src": "32706:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2193,
+ "name": "getLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2154,
+ "src": "32681:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 2196,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "32681:30:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2189,
+ "id": 2202,
+ "nodeType": "Return",
+ "src": "32653:92:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the indexed signer for the specified account and role. \nIf no signer has been specified it will return the account itself.\n@param account The address of the account.\n@param role The role of the signer.",
+ "id": 2204,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getIndexedSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2186,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2183,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2204,
+ "src": "32586:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2182,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "32586:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2185,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 2204,
+ "src": "32603:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2184,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "32603:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "32585:31:1"
+ },
+ "returnParameters": {
+ "id": 2189,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2188,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2204,
+ "src": "32638:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2187,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "32638:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "32637:9:1"
+ },
+ "scope": 2783,
+ "src": "32560:190:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2216,
+ "nodeType": "Block",
+ "src": "33012:54:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2212,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2206,
+ "src": "33041:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2213,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "33050:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2211,
+ "name": "getLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2154,
+ "src": "33025:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 2214,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "33025:36:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2210,
+ "id": 2215,
+ "nodeType": "Return",
+ "src": "33018:43:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the vote signer for the specified account.\n@param account The address of the account.\n@return The address with which the account can sign votes.",
+ "id": 2217,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getVoteSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2207,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2206,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2217,
+ "src": "32965:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2205,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "32965:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "32964:17:1"
+ },
+ "returnParameters": {
+ "id": 2210,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2209,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2217,
+ "src": "33003:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2208,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "33003:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "33002:9:1"
+ },
+ "scope": 2783,
+ "src": "32942:124:1",
+ "stateMutability": "view",
+ "superFunction": 9154,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2229,
+ "nodeType": "Block",
+ "src": "33357:59:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2225,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2219,
+ "src": "33386:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2226,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "33395:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2224,
+ "name": "getLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2154,
+ "src": "33370:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 2227,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "33370:41:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2223,
+ "id": 2228,
+ "nodeType": "Return",
+ "src": "33363:48:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the validator signer for the specified account.\n@param account The address of the account.\n@return The address with which the account can register a validator or group.",
+ "id": 2230,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getValidatorSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2220,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2219,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2230,
+ "src": "33310:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2218,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "33310:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "33309:17:1"
+ },
+ "returnParameters": {
+ "id": 2223,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2222,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2230,
+ "src": "33348:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2221,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "33348:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "33347:9:1"
+ },
+ "scope": 2783,
+ "src": "33282:134:1",
+ "stateMutability": "view",
+ "superFunction": 9147,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2242,
+ "nodeType": "Block",
+ "src": "33699:61:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2238,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2232,
+ "src": "33728:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2239,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "33737:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2237,
+ "name": "getLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2154,
+ "src": "33712:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 2240,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "33712:43:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2236,
+ "id": 2241,
+ "nodeType": "Return",
+ "src": "33705:50:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the attestation signer for the specified account.\n@param account The address of the account.\n@return The address with which the account can sign attestations.",
+ "id": 2243,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getAttestationSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2233,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2232,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2243,
+ "src": "33652:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2231,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "33652:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "33651:17:1"
+ },
+ "returnParameters": {
+ "id": 2236,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2235,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2243,
+ "src": "33690:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2234,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "33690:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "33689:9:1"
+ },
+ "scope": 2783,
+ "src": "33622:138:1",
+ "stateMutability": "view",
+ "superFunction": 9140,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2259,
+ "nodeType": "Block",
+ "src": "33972:59:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2257,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2253,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2245,
+ "src": "34001:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2254,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2247,
+ "src": "34010:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2252,
+ "name": "getLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2154,
+ "src": "33985:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 2255,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "33985:30:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2256,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2245,
+ "src": "34019:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "33985:41:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2251,
+ "id": 2258,
+ "nodeType": "Return",
+ "src": "33978:48:1"
+ }
+ ]
+ },
+ "documentation": "@notice Checks whether or not the account has an indexed signer\nregistered for one of the legacy roles",
+ "id": 2260,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "hasLegacySigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2248,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2245,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2260,
+ "src": "33914:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2244,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "33914:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2247,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 2260,
+ "src": "33931:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2246,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "33931:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "33913:31:1"
+ },
+ "returnParameters": {
+ "id": 2251,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2250,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2260,
+ "src": "33966:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2249,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "33966:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "33965:6:1"
+ },
+ "scope": 2783,
+ "src": "33889:142:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2276,
+ "nodeType": "Block",
+ "src": "34227:60:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2274,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2270,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2262,
+ "src": "34257:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2271,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2264,
+ "src": "34266:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2269,
+ "name": "getDefaultSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2181,
+ "src": "34240:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,bytes32) view returns (address)"
+ }
+ },
+ "id": 2272,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "34240:31:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2273,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2262,
+ "src": "34275:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "34240:42:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2268,
+ "id": 2275,
+ "nodeType": "Return",
+ "src": "34233:49:1"
+ }
+ ]
+ },
+ "documentation": "@notice Checks whether or not the account has an indexed signer\nregistered for a role",
+ "id": 2277,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "hasDefaultSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2265,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2262,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2277,
+ "src": "34169:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2261,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "34169:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2264,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 2277,
+ "src": "34186:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2263,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "34186:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "34168:31:1"
+ },
+ "returnParameters": {
+ "id": 2268,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2267,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2277,
+ "src": "34221:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2266,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "34221:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "34220:6:1"
+ },
+ "scope": 2783,
+ "src": "34143:144:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2299,
+ "nodeType": "Block",
+ "src": "34485:103:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "condition": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2287,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2281,
+ "src": "34511:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2286,
+ "name": "isLegacyRole",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2086,
+ "src": "34498:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (bytes32) pure returns (bool)"
+ }
+ },
+ "id": 2288,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "34498:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2294,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2279,
+ "src": "34569:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2295,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2281,
+ "src": "34578:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2293,
+ "name": "hasDefaultSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2277,
+ "src": "34552:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 2296,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "34552:31:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 2297,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "Conditional",
+ "src": "34498:85:1",
+ "trueExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2290,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2279,
+ "src": "34535:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2291,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2281,
+ "src": "34544:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2289,
+ "name": "hasLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2260,
+ "src": "34519:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 2292,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "34519:30:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2285,
+ "id": 2298,
+ "nodeType": "Return",
+ "src": "34491:92:1"
+ }
+ ]
+ },
+ "documentation": "@notice Checks whether or not the account has an indexed signer\nregistered for the role",
+ "id": 2300,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "hasIndexedSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2282,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2279,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2300,
+ "src": "34427:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2278,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "34427:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2281,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 2300,
+ "src": "34444:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2280,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "34444:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "34426:31:1"
+ },
+ "returnParameters": {
+ "id": 2285,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2284,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2300,
+ "src": "34479:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2283,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "34479:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "34478:6:1"
+ },
+ "scope": 2783,
+ "src": "34401:187:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2319,
+ "nodeType": "Block",
+ "src": "34863:78:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2310,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2302,
+ "src": "34893:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2314,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2304,
+ "src": "34929:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 2312,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45783,
+ "src": "34912:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 2313,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encodePacked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "34912:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 2315,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "34912:22:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 2311,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45790,
+ "src": "34902:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 2316,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "34902:33:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2309,
+ "name": "hasIndexedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2300,
+ "src": "34876:16:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 2317,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "34876:60:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2308,
+ "id": 2318,
+ "nodeType": "Return",
+ "src": "34869:67:1"
+ }
+ ]
+ },
+ "documentation": "@notice Checks whether or not the account has a signer\nregistered for the plaintext role.\n@dev See `hasIndexedSigner` for more gas efficient call.",
+ "id": 2320,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "hasAuthorizedSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2305,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2302,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2320,
+ "src": "34795:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2301,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "34795:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2304,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 2320,
+ "src": "34812:20:1",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 2303,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "34812:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "34794:39:1"
+ },
+ "returnParameters": {
+ "id": 2308,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2307,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2320,
+ "src": "34857:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2306,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "34857:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "34856:6:1"
+ },
+ "scope": 2783,
+ "src": "34766:175:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2332,
+ "nodeType": "Block",
+ "src": "35227:54:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2328,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2322,
+ "src": "35256:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2329,
+ "name": "VoteSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 177,
+ "src": "35265:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2327,
+ "name": "hasLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2260,
+ "src": "35240:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 2330,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "35240:36:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2326,
+ "id": 2331,
+ "nodeType": "Return",
+ "src": "35233:43:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns if account has specified a dedicated vote signer.\n@param account The address of the account.\n@return Whether the account has specified a dedicated vote signer.",
+ "id": 2333,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "hasAuthorizedVoteSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2323,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2322,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2333,
+ "src": "35181:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2321,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "35181:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "35180:17:1"
+ },
+ "returnParameters": {
+ "id": 2326,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2325,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2333,
+ "src": "35221:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2324,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "35221:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "35220:6:1"
+ },
+ "scope": 2783,
+ "src": "35148:133:1",
+ "stateMutability": "view",
+ "superFunction": 9161,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2345,
+ "nodeType": "Block",
+ "src": "35582:59:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2341,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2335,
+ "src": "35611:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2342,
+ "name": "ValidatorSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 161,
+ "src": "35620:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2340,
+ "name": "hasLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2260,
+ "src": "35595:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 2343,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "35595:41:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2339,
+ "id": 2344,
+ "nodeType": "Return",
+ "src": "35588:48:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns if account has specified a dedicated validator signer.\n@param account The address of the account.\n@return Whether the account has specified a dedicated validator signer.",
+ "id": 2346,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "hasAuthorizedValidatorSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2336,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2335,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2346,
+ "src": "35536:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2334,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "35536:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "35535:17:1"
+ },
+ "returnParameters": {
+ "id": 2339,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2338,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2346,
+ "src": "35576:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2337,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "35576:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "35575:6:1"
+ },
+ "scope": 2783,
+ "src": "35498:143:1",
+ "stateMutability": "view",
+ "superFunction": 9168,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2358,
+ "nodeType": "Block",
+ "src": "35948:61:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2354,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2348,
+ "src": "35977:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2355,
+ "name": "AttestationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 169,
+ "src": "35986:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2353,
+ "name": "hasLegacySigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2260,
+ "src": "35961:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
+ "typeString": "function (address,bytes32) view returns (bool)"
+ }
+ },
+ "id": 2356,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "35961:43:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2352,
+ "id": 2357,
+ "nodeType": "Return",
+ "src": "35954:50:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns if account has specified a dedicated attestation signer.\n@param account The address of the account.\n@return Whether the account has specified a dedicated attestation signer.",
+ "id": 2359,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "hasAuthorizedAttestationSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2349,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2348,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2359,
+ "src": "35902:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2347,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "35902:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "35901:17:1"
+ },
+ "returnParameters": {
+ "id": 2352,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2351,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2359,
+ "src": "35942:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2350,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "35942:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "35941:6:1"
+ },
+ "scope": 2783,
+ "src": "35862:147:1",
+ "stateMutability": "view",
+ "superFunction": 9175,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2371,
+ "nodeType": "Block",
+ "src": "36256:40:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2366,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "36269:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 2368,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2367,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2361,
+ "src": "36278:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "36269:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "id": 2369,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "name",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 105,
+ "src": "36269:22:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "functionReturnParameters": 2365,
+ "id": 2370,
+ "nodeType": "Return",
+ "src": "36262:29:1"
+ }
+ ]
+ },
+ "documentation": "@notice Getter for the name of an account.\n@param account The address of the account to get the name for.\n@return name The name of the account.",
+ "id": 2372,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getName",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2362,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2361,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2372,
+ "src": "36201:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2360,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "36201:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "36200:17:1"
+ },
+ "returnParameters": {
+ "id": 2365,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2364,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2372,
+ "src": "36241:13:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 2363,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "36241:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "36240:15:1"
+ },
+ "scope": 2783,
+ "src": "36184:112:1",
+ "stateMutability": "view",
+ "superFunction": 9255,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2384,
+ "nodeType": "Block",
+ "src": "36572:47:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2379,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "36585:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 2381,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2380,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2374,
+ "src": "36594:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "36585:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "id": 2382,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "metadataURL",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 109,
+ "src": "36585:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "functionReturnParameters": 2378,
+ "id": 2383,
+ "nodeType": "Return",
+ "src": "36578:36:1"
+ }
+ ]
+ },
+ "documentation": "@notice Getter for the metadata of an account.\n@param account The address of the account to get the metadata for.\n@return metadataURL The URL to access the metadata.",
+ "id": 2385,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getMetadataURL",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2375,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2374,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2385,
+ "src": "36517:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2373,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "36517:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "36516:17:1"
+ },
+ "returnParameters": {
+ "id": 2378,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2377,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2385,
+ "src": "36557:13:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 2376,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "36557:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "36556:15:1"
+ },
+ "scope": 2783,
+ "src": "36493:126:1",
+ "stateMutability": "view",
+ "superFunction": 9237,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2523,
+ "nodeType": "Block",
+ "src": "37039:636:1",
+ "statements": [
+ {
+ "assignments": [
+ 2397
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2397,
+ "name": "totalSize",
+ "nodeType": "VariableDeclaration",
+ "scope": 2523,
+ "src": "37045:17:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 2396,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "37045:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2399,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2398,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "37065:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "37045:21:1"
+ },
+ {
+ "assignments": [
+ 2403
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2403,
+ "name": "sizes",
+ "nodeType": "VariableDeclaration",
+ "scope": 2523,
+ "src": "37072:22:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 2401,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "37072:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2402,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "37072:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2410,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2407,
+ "name": "accountsToQuery",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2388,
+ "src": "37111:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 2408,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "37111:22:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 2406,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "NewExpression",
+ "src": "37097:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
+ "typeString": "function (uint256) pure returns (uint256[] memory)"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 2404,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "37101:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2405,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "37101:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ }
+ },
+ "id": 2409,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "37097:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "37072:62:1"
+ },
+ {
+ "body": {
+ "id": 2449,
+ "nodeType": "Block",
+ "src": "37202:123:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2438,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2426,
+ "name": "sizes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2403,
+ "src": "37210:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "id": 2428,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2427,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2412,
+ "src": "37216:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "37210:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2430,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "37227:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 2434,
+ "indexExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2431,
+ "name": "accountsToQuery",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2388,
+ "src": "37236:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 2433,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2432,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2412,
+ "src": "37252:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "37236:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "37227:28:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "id": 2435,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "metadataURL",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 109,
+ "src": "37227:40:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ ],
+ "id": 2429,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "37221:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+ "typeString": "type(bytes storage pointer)"
+ },
+ "typeName": "bytes"
+ },
+ "id": 2436,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "37221:47:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes storage pointer"
+ }
+ },
+ "id": 2437,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "37221:54:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "37210:65:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2439,
+ "nodeType": "ExpressionStatement",
+ "src": "37210:65:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2447,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 2440,
+ "name": "totalSize",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2397,
+ "src": "37283:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2443,
+ "name": "sizes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2403,
+ "src": "37309:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "id": 2445,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2444,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2412,
+ "src": "37315:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "37309:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 2441,
+ "name": "totalSize",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2397,
+ "src": "37295:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2442,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 44380,
+ "src": "37295:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 2446,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "37295:23:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "37283:35:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2448,
+ "nodeType": "ExpressionStatement",
+ "src": "37283:35:1"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 2418,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2415,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2412,
+ "src": "37160:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2416,
+ "name": "accountsToQuery",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2388,
+ "src": "37164:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 2417,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "37164:22:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "37160:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 2450,
+ "initializationExpression": {
+ "assignments": [
+ 2412
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2412,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 2450,
+ "src": "37145:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 2411,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "37145:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2414,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2413,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "37157:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "37145:13:1"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2424,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 2419,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2412,
+ "src": "37188:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 2422,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "37198:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 2420,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2412,
+ "src": "37192:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2421,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 44380,
+ "src": "37192:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 2423,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "37192:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "37188:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2425,
+ "nodeType": "ExpressionStatement",
+ "src": "37188:12:1"
+ },
+ "nodeType": "ForStatement",
+ "src": "37140:185:1"
+ },
+ {
+ "assignments": [
+ 2452
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2452,
+ "name": "data",
+ "nodeType": "VariableDeclaration",
+ "scope": 2523,
+ "src": "37331:17:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 2451,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "37331:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2457,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2455,
+ "name": "totalSize",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2397,
+ "src": "37361:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 2454,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "NewExpression",
+ "src": "37351:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_$",
+ "typeString": "function (uint256) pure returns (bytes memory)"
+ },
+ "typeName": {
+ "id": 2453,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "37355:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ }
+ },
+ "id": 2456,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "37351:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory",
+ "typeString": "bytes memory"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "37331:40:1"
+ },
+ {
+ "assignments": [
+ 2459
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2459,
+ "name": "pointer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2523,
+ "src": "37377:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 2458,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "37377:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2461,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2460,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "37395:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "37377:19:1"
+ },
+ {
+ "body": {
+ "id": 2517,
+ "nodeType": "Block",
+ "src": "37464:181:1",
+ "statements": [
+ {
+ "body": {
+ "id": 2515,
+ "nodeType": "Block",
+ "src": "37520:119:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2506,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2493,
+ "name": "data",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2452,
+ "src": "37530:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ },
+ "id": 2495,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2494,
+ "name": "pointer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2459,
+ "src": "37535:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "37530:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes1",
+ "typeString": "bytes1"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2497,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "37552:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 2501,
+ "indexExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2498,
+ "name": "accountsToQuery",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2388,
+ "src": "37561:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 2500,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2499,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2463,
+ "src": "37577:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "37561:18:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "37552:28:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "id": 2502,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "metadataURL",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 109,
+ "src": "37552:40:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ ],
+ "id": 2496,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "37546:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+ "typeString": "type(bytes storage pointer)"
+ },
+ "typeName": "bytes"
+ },
+ "id": 2503,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "37546:47:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes storage pointer"
+ }
+ },
+ "id": 2505,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2504,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2478,
+ "src": "37594:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "37546:50:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes1",
+ "typeString": "bytes1"
+ }
+ },
+ "src": "37530:66:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes1",
+ "typeString": "bytes1"
+ }
+ },
+ "id": 2507,
+ "nodeType": "ExpressionStatement",
+ "src": "37530:66:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2513,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 2508,
+ "name": "pointer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2459,
+ "src": "37606:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 2511,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "37628:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 2509,
+ "name": "pointer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2459,
+ "src": "37616:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2510,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 44380,
+ "src": "37616:11:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 2512,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "37616:14:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "37606:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2514,
+ "nodeType": "ExpressionStatement",
+ "src": "37606:24:1"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 2485,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2481,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2478,
+ "src": "37492:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2482,
+ "name": "sizes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2403,
+ "src": "37496:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "id": 2484,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2483,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2463,
+ "src": "37502:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "37496:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "37492:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 2516,
+ "initializationExpression": {
+ "assignments": [
+ 2478
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2478,
+ "name": "j",
+ "nodeType": "VariableDeclaration",
+ "scope": 2516,
+ "src": "37477:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 2477,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "37477:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2480,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2479,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "37489:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "37477:13:1"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2491,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 2486,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2478,
+ "src": "37506:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 2489,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "37516:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 2487,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2478,
+ "src": "37510:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2488,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 44380,
+ "src": "37510:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 2490,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "37510:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "37506:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2492,
+ "nodeType": "ExpressionStatement",
+ "src": "37506:12:1"
+ },
+ "nodeType": "ForStatement",
+ "src": "37472:167:1"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 2469,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2466,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2463,
+ "src": "37422:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2467,
+ "name": "accountsToQuery",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2388,
+ "src": "37426:15:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 2468,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "37426:22:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "37422:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 2518,
+ "initializationExpression": {
+ "assignments": [
+ 2463
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2463,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 2518,
+ "src": "37407:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 2462,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "37407:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2465,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2464,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "37419:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "37407:13:1"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2475,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 2470,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2463,
+ "src": "37450:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 2473,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "37460:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 2471,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2463,
+ "src": "37454:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2472,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 44380,
+ "src": "37454:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 2474,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "37454:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "37450:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2476,
+ "nodeType": "ExpressionStatement",
+ "src": "37450:12:1"
+ },
+ "nodeType": "ForStatement",
+ "src": "37402:243:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 2519,
+ "name": "sizes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2403,
+ "src": "37658:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2520,
+ "name": "data",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2452,
+ "src": "37665:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "id": 2521,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "37657:13:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$",
+ "typeString": "tuple(uint256[] memory,bytes memory)"
+ }
+ },
+ "functionReturnParameters": 2395,
+ "id": 2522,
+ "nodeType": "Return",
+ "src": "37650:20:1"
+ }
+ ]
+ },
+ "documentation": "@notice Getter for the metadata of multiple accounts.\n@param accountsToQuery The addresses of the accounts to get the metadata for.\n@return (stringLengths[] - the length of each string in bytes\n data - all strings concatenated\n )",
+ "id": 2524,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "batchGetMetadataURL",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2389,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2388,
+ "name": "accountsToQuery",
+ "nodeType": "VariableDeclaration",
+ "scope": 2524,
+ "src": "36934:34:1",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 2386,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "36934:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 2387,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "36934:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "36933:36:1"
+ },
+ "returnParameters": {
+ "id": 2395,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2392,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2524,
+ "src": "37005:16:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 2390,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "37005:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 2391,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "37005:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2394,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2524,
+ "src": "37023:12:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 2393,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "37023:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "37004:32:1"
+ },
+ "scope": 2783,
+ "src": "36905:770:1",
+ "stateMutability": "view",
+ "superFunction": 9248,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2536,
+ "nodeType": "Block",
+ "src": "37998:53:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2531,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "38011:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 2533,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2532,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2526,
+ "src": "38020:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "38011:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "id": 2534,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "dataEncryptionKey",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 107,
+ "src": "38011:35:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage",
+ "typeString": "bytes storage ref"
+ }
+ },
+ "functionReturnParameters": 2530,
+ "id": 2535,
+ "nodeType": "Return",
+ "src": "38004:42:1"
+ }
+ ]
+ },
+ "documentation": "@notice Getter for the data encryption key and version.\n@param account The address of the account to get the key for\n@return dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed.",
+ "id": 2537,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getDataEncryptionKey",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2527,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2526,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2537,
+ "src": "37944:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2525,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "37944:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "37943:17:1"
+ },
+ "returnParameters": {
+ "id": 2530,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2529,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2537,
+ "src": "37984:12:1",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes"
+ },
+ "typeName": {
+ "id": 2528,
+ "name": "bytes",
+ "nodeType": "ElementaryTypeName",
+ "src": "37984:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_storage_ptr",
+ "typeString": "bytes"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "37983:14:1"
+ },
+ "scope": 2783,
+ "src": "37914:137:1",
+ "stateMutability": "view",
+ "superFunction": 9223,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2549,
+ "nodeType": "Block",
+ "src": "38305:49:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2544,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "38318:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 2546,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2545,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2539,
+ "src": "38327:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "38318:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "id": 2547,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "walletAddress",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 103,
+ "src": "38318:31:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2543,
+ "id": 2548,
+ "nodeType": "Return",
+ "src": "38311:38:1"
+ }
+ ]
+ },
+ "documentation": "@notice Getter for the wallet address for an account\n@param account The address of the account to get the wallet address for\n@return Wallet address",
+ "id": 2550,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getWalletAddress",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2540,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2539,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2550,
+ "src": "38256:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2538,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "38256:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "38255:17:1"
+ },
+ "returnParameters": {
+ "id": 2543,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2542,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2550,
+ "src": "38296:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2541,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "38296:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "38295:9:1"
+ },
+ "scope": 2783,
+ "src": "38230:124:1",
+ "stateMutability": "view",
+ "superFunction": 9230,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2563,
+ "nodeType": "Block",
+ "src": "38603:44:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2557,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "38617:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 2559,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2558,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2552,
+ "src": "38626:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "38617:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "id": 2560,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "exists",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 99,
+ "src": "38617:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 2561,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "38616:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2556,
+ "id": 2562,
+ "nodeType": "Return",
+ "src": "38609:33:1"
+ }
+ ]
+ },
+ "documentation": "@notice Check if an account already exists.\n@param account The address of the account\n@return Returns `true` if account exists. Returns `false` otherwise.",
+ "id": 2564,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isAccount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2553,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2552,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2564,
+ "src": "38559:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2551,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "38559:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "38558:17:1"
+ },
+ "returnParameters": {
+ "id": 2556,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2555,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2564,
+ "src": "38597:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2554,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "38597:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "38596:6:1"
+ },
+ "scope": 2783,
+ "src": "38540:107:1",
+ "stateMutability": "view",
+ "superFunction": 9105,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2578,
+ "nodeType": "Block",
+ "src": "38901:45:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 2575,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "!",
+ "prefix": true,
+ "src": "38915:25:1",
+ "subExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2571,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 119,
+ "src": "38916:8:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Account_$110_storage_$",
+ "typeString": "mapping(address => struct Accounts.Account storage ref)"
+ }
+ },
+ "id": 2573,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2572,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2566,
+ "src": "38925:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "38916:17:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Account_$110_storage",
+ "typeString": "struct Accounts.Account storage ref"
+ }
+ },
+ "id": 2574,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "exists",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 99,
+ "src": "38916:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 2576,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "38914:27:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2570,
+ "id": 2577,
+ "nodeType": "Return",
+ "src": "38907:34:1"
+ }
+ ]
+ },
+ "documentation": "@notice Check if an account already exists.\n@param account The address of the account\n@return Returns `false` if account exists. Returns `true` otherwise.",
+ "id": 2579,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isNotAccount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2567,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2566,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2579,
+ "src": "38855:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2565,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "38855:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "38854:17:1"
+ },
+ "returnParameters": {
+ "id": 2570,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2569,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2579,
+ "src": "38895:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2568,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "38895:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "38894:6:1"
+ },
+ "scope": 2783,
+ "src": "38833:113:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 2595,
+ "nodeType": "Block",
+ "src": "39236:54:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2592,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2586,
+ "name": "authorizedBy",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 123,
+ "src": "39250:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ }
+ },
+ "id": 2588,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2587,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2581,
+ "src": "39263:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "39250:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2590,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "39282:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 2589,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "39274:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 2591,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "39274:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "39250:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 2593,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "39249:36:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2585,
+ "id": 2594,
+ "nodeType": "Return",
+ "src": "39242:43:1"
+ }
+ ]
+ },
+ "documentation": "@notice Check if an address has been an authorized signer for an account.\n@param signer The possibly authorized address.\n@return Returns `true` if authorized. Returns `false` otherwise.",
+ "id": 2596,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isAuthorizedSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2582,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2581,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2596,
+ "src": "39191:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2580,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "39191:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "39190:16:1"
+ },
+ "returnParameters": {
+ "id": 2585,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2584,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2596,
+ "src": "39230:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2583,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "39230:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "39229:6:1"
+ },
+ "scope": 2783,
+ "src": "39163:127:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 2612,
+ "nodeType": "Block",
+ "src": "39587:54:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2609,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2603,
+ "name": "authorizedBy",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 123,
+ "src": "39601:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ }
+ },
+ "id": 2605,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2604,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2598,
+ "src": "39614:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "39601:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2607,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "39633:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 2606,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "39625:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 2608,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "39625:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "39601:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 2610,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "39600:36:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2602,
+ "id": 2611,
+ "nodeType": "Return",
+ "src": "39593:43:1"
+ }
+ ]
+ },
+ "documentation": "@notice Check if an address has not been an authorized signer for an account.\n@param signer The possibly authorized address.\n@return Returns `false` if authorized. Returns `true` otherwise.",
+ "id": 2613,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isNotAuthorizedSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2599,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2598,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2613,
+ "src": "39542:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2597,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "39542:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "39541:16:1"
+ },
+ "returnParameters": {
+ "id": 2602,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2601,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2613,
+ "src": "39581:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2600,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "39581:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "39580:6:1"
+ },
+ "scope": 2783,
+ "src": "39511:130:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 2637,
+ "nodeType": "Block",
+ "src": "40103:89:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 2634,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2628,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2622,
+ "name": "authorizedBy",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 123,
+ "src": "40117:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ }
+ },
+ "id": 2624,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2623,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2617,
+ "src": "40130:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "40117:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 2626,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "40149:1:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 2625,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "40141:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 2627,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "40141:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "40117:34:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2633,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2629,
+ "name": "authorizedBy",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 123,
+ "src": "40155:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ }
+ },
+ "id": 2631,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2630,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2617,
+ "src": "40168:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "40155:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2632,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2615,
+ "src": "40179:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "40155:31:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "40117:69:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 2635,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "40116:71:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 2621,
+ "id": 2636,
+ "nodeType": "Return",
+ "src": "40109:78:1"
+ }
+ ]
+ },
+ "documentation": "@notice Check if `signer` has not been authorized, and if it has been previously\n authorized that it was authorized by `account`.\n@param account The authorizing account address.\n@param signer The possibly authorized address.\n@return Returns `false` if authorized. Returns `true` otherwise.",
+ "id": 2638,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isNotAuthorizedSignerForAnotherAccount",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2618,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2615,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2638,
+ "src": "40027:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2614,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "40027:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2617,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2638,
+ "src": "40044:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2616,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "40044:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "40026:33:1"
+ },
+ "returnParameters": {
+ "id": 2621,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2620,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2638,
+ "src": "40095:4:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 2619,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "40095:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "40094:6:1"
+ },
+ "scope": 2783,
+ "src": "39979:213:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 2671,
+ "nodeType": "Block",
+ "src": "40844:162:1",
+ "statements": [
+ {
+ "assignments": [
+ 2650
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2650,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2671,
+ "src": "40850:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2649,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "40850:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2659,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2653,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "40897:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 2654,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "40897:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2655,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2642,
+ "src": "40909:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2656,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2644,
+ "src": "40912:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2657,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2646,
+ "src": "40915:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 2651,
+ "name": "Signatures",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7219,
+ "src": "40867:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Signatures_$7219_$",
+ "typeString": "type(library Signatures)"
+ }
+ },
+ "id": 2652,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getSignerOfAddress",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 7127,
+ "src": "40867:29:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_delegatecall_pure$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,uint8,bytes32,bytes32) pure returns (address)"
+ }
+ },
+ "id": 2658,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "40867:50:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "40850:67:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2663,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2661,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2650,
+ "src": "40931:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2662,
+ "name": "authorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2640,
+ "src": "40941:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "40931:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "496e76616c6964207369676e6174757265",
+ "id": 2664,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "40953:19:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7",
+ "typeString": "literal_string \"Invalid signature\""
+ },
+ "value": "Invalid signature"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7",
+ "typeString": "literal_string \"Invalid signature\""
+ }
+ ],
+ "id": 2660,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "40923:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 2665,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "40923:50:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 2666,
+ "nodeType": "ExpressionStatement",
+ "src": "40923:50:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2668,
+ "name": "authorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2640,
+ "src": "40990:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 2667,
+ "name": "authorize",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2782,
+ "src": "40980:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 2669,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "40980:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 2670,
+ "nodeType": "ExpressionStatement",
+ "src": "40980:21:1"
+ }
+ ]
+ },
+ "documentation": "@notice Authorizes some role of `msg.sender`'s account to another address.\n@param authorized The address to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev Fails if the address is already authorized to another account or is an account itself.\n@dev Note that once an address is authorized, it may never be authorized again.\n@dev v, r, s constitute `authorized`'s signature on `msg.sender`.",
+ "id": 2672,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "authorizeAddress",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2647,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2640,
+ "name": "authorized",
+ "nodeType": "VariableDeclaration",
+ "scope": 2672,
+ "src": "40785:18:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2639,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "40785:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2642,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 2672,
+ "src": "40805:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 2641,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "40805:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2644,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 2672,
+ "src": "40814:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2643,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "40814:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2646,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 2672,
+ "src": "40825:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2645,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "40825:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "40784:51:1"
+ },
+ "returnParameters": {
+ "id": 2648,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "40844:0:1"
+ },
+ "scope": 2783,
+ "src": "40759:247:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "private"
+ },
+ {
+ "body": {
+ "id": 2710,
+ "nodeType": "Block",
+ "src": "41740:214:1",
+ "statements": [
+ {
+ "assignments": [
+ 2690
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2690,
+ "name": "structHash",
+ "nodeType": "VariableDeclaration",
+ "scope": 2710,
+ "src": "41746:18:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2689,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "41746:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2700,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2694,
+ "name": "EIP712_AUTHORIZE_SIGNER_TYPEHASH",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 142,
+ "src": "41795:32:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2695,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2674,
+ "src": "41829:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2696,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2676,
+ "src": "41838:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2697,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2678,
+ "src": "41846:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 2692,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45783,
+ "src": "41784:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 2693,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encode",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "41784:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 2698,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "41784:67:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 2691,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45790,
+ "src": "41767:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 2699,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "41767:90:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "41746:111:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2703,
+ "name": "eip712DomainSeparator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 144,
+ "src": "41906:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2704,
+ "name": "structHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2690,
+ "src": "41929:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2705,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2680,
+ "src": "41941:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2706,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2682,
+ "src": "41944:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2707,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2684,
+ "src": "41947:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 2701,
+ "name": "Signatures",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7219,
+ "src": "41870:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Signatures_$7219_$",
+ "typeString": "type(library Signatures)"
+ }
+ },
+ "id": 2702,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getSignerOfTypedDataHash",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 7218,
+ "src": "41870:35:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (bytes32,bytes32,uint8,bytes32,bytes32) pure returns (address)"
+ }
+ },
+ "id": 2708,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "41870:79:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 2688,
+ "id": 2709,
+ "nodeType": "Return",
+ "src": "41863:86:1"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the address that signed the provided role authorization.\n@param account The `account` property signed over in the EIP712 signature\n@param signer The `signer` property signed over in the EIP712 signature\n@param role The `role` property signed over in the EIP712 signature\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@return The address that signed the provided role authorization.",
+ "id": 2711,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getRoleAuthorizationSigner",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2685,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2674,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 2711,
+ "src": "41609:15:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2673,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "41609:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2676,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2711,
+ "src": "41630:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2675,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "41630:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2678,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 2711,
+ "src": "41650:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2677,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "41650:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2680,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 2711,
+ "src": "41668:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 2679,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "41668:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2682,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 2711,
+ "src": "41681:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2681,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "41681:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2684,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 2711,
+ "src": "41696:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2683,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "41696:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "41603:106:1"
+ },
+ "returnParameters": {
+ "id": 2688,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2687,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 2711,
+ "src": "41731:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2686,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "41731:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "41730:9:1"
+ },
+ "scope": 2783,
+ "src": "41568:386:1",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 2747,
+ "nodeType": "Block",
+ "src": "42674:177:1",
+ "statements": [
+ {
+ "assignments": [
+ 2725
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 2725,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 2747,
+ "src": "42680:14:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2724,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "42680:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 2735,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2727,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "42724:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 2728,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "42724:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2729,
+ "name": "authorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2713,
+ "src": "42736:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2730,
+ "name": "role",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2715,
+ "src": "42748:4:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2731,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2717,
+ "src": "42754:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2732,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2719,
+ "src": "42757:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2733,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2721,
+ "src": "42760:1:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 2726,
+ "name": "getRoleAuthorizationSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2711,
+ "src": "42697:26:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,address,bytes32,uint8,bytes32,bytes32) view returns (address)"
+ }
+ },
+ "id": 2734,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "42697:65:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "42680:82:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 2739,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 2737,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2725,
+ "src": "42776:6:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 2738,
+ "name": "authorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2713,
+ "src": "42786:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "42776:20:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "496e76616c6964207369676e6174757265",
+ "id": 2740,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "42798:19:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7",
+ "typeString": "literal_string \"Invalid signature\""
+ },
+ "value": "Invalid signature"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_4f2d7dfcb27c0aafa13ae8c400de482c7832204d194018b6e45bd2bf244c74e7",
+ "typeString": "literal_string \"Invalid signature\""
+ }
+ ],
+ "id": 2736,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "42768:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 2741,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "42768:50:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 2742,
+ "nodeType": "ExpressionStatement",
+ "src": "42768:50:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2744,
+ "name": "authorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2713,
+ "src": "42835:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 2743,
+ "name": "authorize",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2782,
+ "src": "42825:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 2745,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "42825:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 2746,
+ "nodeType": "ExpressionStatement",
+ "src": "42825:21:1"
+ }
+ ]
+ },
+ "documentation": "@notice Authorizes a role of `msg.sender`'s account to another address (`authorized`).\n@param authorized The address to authorize.\n@param role The role to authorize.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@dev Fails if the address is already authorized to another account or is an account itself.\n@dev Note that this signature is EIP712 compliant over the authorizing `account` \n(`msg.sender`), `signer` (`authorized`) and `role`.",
+ "id": 2748,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "authorizeAddressWithRole",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2722,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2713,
+ "name": "authorized",
+ "nodeType": "VariableDeclaration",
+ "scope": 2748,
+ "src": "42595:18:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2712,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "42595:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2715,
+ "name": "role",
+ "nodeType": "VariableDeclaration",
+ "scope": 2748,
+ "src": "42615:12:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2714,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "42615:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2717,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 2748,
+ "src": "42629:7:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 2716,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "42629:5:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2719,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 2748,
+ "src": "42638:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2718,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "42638:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 2721,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 2748,
+ "src": "42649:9:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 2720,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "42649:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "42594:65:1"
+ },
+ "returnParameters": {
+ "id": 2723,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "42674:0:1"
+ },
+ "scope": 2783,
+ "src": "42561:290:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "private"
+ },
+ {
+ "body": {
+ "id": 2781,
+ "nodeType": "Block",
+ "src": "43122:301:1",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2755,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "43146:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 2756,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "43146:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 2754,
+ "name": "isAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2564,
+ "src": "43136:9:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 2757,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "43136:21:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "556e6b6e6f776e206163636f756e74",
+ "id": 2758,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "43159:17:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ },
+ "value": "Unknown account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3e87ebf4104e7b3578edbd2efae0b835474e01fd33d03f7cffd16878d664533f",
+ "typeString": "literal_string \"Unknown account\""
+ }
+ ],
+ "id": 2753,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "43128:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 2759,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "43128:49:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 2760,
+ "nodeType": "ExpressionStatement",
+ "src": "43128:49:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 2770,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 2763,
+ "name": "authorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2750,
+ "src": "43211:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 2762,
+ "name": "isNotAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2579,
+ "src": "43198:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address) view returns (bool)"
+ }
+ },
+ "id": 2764,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "43198:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2766,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "43265:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 2767,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "43265:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 2768,
+ "name": "authorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2750,
+ "src": "43277:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 2765,
+ "name": "isNotAuthorizedSignerForAnotherAccount",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2638,
+ "src": "43226:38:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
+ "typeString": "function (address,address) view returns (bool)"
+ }
+ },
+ "id": 2769,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "43226:62:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "43198:90:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "43616e6e6f742072652d617574686f72697a652061646472657373206f72206c6f636b656420676f6c64206163636f756e7420666f7220616e6f74686572206163636f756e74",
+ "id": 2771,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "43296:72:1",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_763245df8eb4a3177de2f6c2cbb72ad869f273e4324bacac36058cc4f16c4d24",
+ "typeString": "literal_string \"Cannot re-authorize address or locked gold account for another account\""
+ },
+ "value": "Cannot re-authorize address or locked gold account for another account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_763245df8eb4a3177de2f6c2cbb72ad869f273e4324bacac36058cc4f16c4d24",
+ "typeString": "literal_string \"Cannot re-authorize address or locked gold account for another account\""
+ }
+ ],
+ "id": 2761,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45799,
+ 45800
+ ],
+ "referencedDeclaration": 45800,
+ "src": "43183:7:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 2772,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "43183:191:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 2773,
+ "nodeType": "ExpressionStatement",
+ "src": "43183:191:1"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 2779,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 2774,
+ "name": "authorizedBy",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 123,
+ "src": "43381:12:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
+ "typeString": "mapping(address => address)"
+ }
+ },
+ "id": 2776,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 2775,
+ "name": "authorized",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2750,
+ "src": "43394:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "43381:24:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 2777,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45796,
+ "src": "43408:3:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 2778,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "43408:10:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "43381:37:1",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 2780,
+ "nodeType": "ExpressionStatement",
+ "src": "43381:37:1"
+ }
+ ]
+ },
+ "documentation": "@notice Authorizes an address to `msg.sender`'s account\n@param authorized The address to authorize.\n@dev Fails if the address is already authorized for another account or is an account itself.",
+ "id": 2782,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "authorize",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 2751,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 2750,
+ "name": "authorized",
+ "nodeType": "VariableDeclaration",
+ "scope": 2782,
+ "src": "43094:18:1",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 2749,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "43094:7:1",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "43093:20:1"
+ },
+ "returnParameters": {
+ "id": 2752,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "43122:0:1"
+ },
+ "scope": 2783,
+ "src": "43075:348:1",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "private"
+ }
+ ],
+ "scope": 2784,
+ "src": "445:42980:1"
+ }
+ ],
+ "src": "0:43426:1"
+ },
+ "compiler": {
+ "name": "solc",
+ "version": "0.5.13+commit.5b0b510c.Emscripten.clang"
+ },
+ "networks": {},
+ "schemaVersion": "3.0.23",
+ "updatedAt": "2022-10-10T05:02:35.305Z",
+ "devdoc": {
+ "methods": {
+ "addStorageRoot(bytes)": {
+ "params": {
+ "url": "The URL pointing to the offchain storage root."
+ }
+ },
+ "attestationSignerToAccount(address)": {
+ "details": "Fails if the `signer` is not an account or currently authorized attestation signer.",
+ "params": {
+ "signer": "The address of the account or currently authorized attestation signer."
+ },
+ "return": "The associated account."
+ },
+ "authorizeAttestationSigner(address,uint8,bytes32,bytes32)": {
+ "details": "v, r, s constitute `signer`'s signature on `msg.sender`.",
+ "params": {
+ "r": "Output value r of the ECDSA signature.",
+ "s": "Output value s of the ECDSA signature.",
+ "signer": "The address of the signing key to authorize.",
+ "v": "The recovery id of the incoming ECDSA signature."
+ }
+ },
+ "authorizeSigner(address,bytes32)": {
+ "params": {
+ "role": "The role to authorize signing for.",
+ "signer": "The address of the signing key to authorize."
+ }
+ },
+ "authorizeSignerWithSignature(address,bytes32,uint8,bytes32,bytes32)": {
+ "details": "v, r, s constitute `signer`'s EIP712 signature over `role`, `msg.sender` and `signer`.",
+ "params": {
+ "r": "Output value r of the ECDSA signature.",
+ "role": "The role to authorize signing for.",
+ "s": "Output value s of the ECDSA signature.",
+ "signer": "The address of the signing key to authorize.",
+ "v": "The recovery id of the incoming ECDSA signature."
+ }
+ },
+ "authorizeValidatorSigner(address,uint8,bytes32,bytes32)": {
+ "details": "v, r, s constitute `signer`'s signature on `msg.sender`.",
+ "params": {
+ "r": "Output value r of the ECDSA signature.",
+ "s": "Output value s of the ECDSA signature.",
+ "signer": "The address of the signing key to authorize.",
+ "v": "The recovery id of the incoming ECDSA signature."
+ }
+ },
+ "authorizeValidatorSignerWithKeys(address,uint8,bytes32,bytes32,bytes,bytes,bytes)": {
+ "details": "v, r, s constitute `signer`'s signature on `msg.sender`.",
+ "params": {
+ "blsPop": "The BLS public key proof-of-possession, which consists of a signature on the account address. 48 bytes.",
+ "blsPublicKey": "The BLS public key that the validator is using for consensus, should pass proof of possession. 96 bytes.",
+ "ecdsaPublicKey": "The ECDSA public key corresponding to `signer`.",
+ "r": "Output value r of the ECDSA signature.",
+ "s": "Output value s of the ECDSA signature.",
+ "signer": "The address of the signing key to authorize.",
+ "v": "The recovery id of the incoming ECDSA signature."
+ }
+ },
+ "authorizeValidatorSignerWithPublicKey(address,uint8,bytes32,bytes32,bytes)": {
+ "details": "v, r, s constitute `signer`'s signature on `msg.sender`.",
+ "params": {
+ "ecdsaPublicKey": "The ECDSA public key corresponding to `signer`.",
+ "r": "Output value r of the ECDSA signature.",
+ "s": "Output value s of the ECDSA signature.",
+ "signer": "The address of the signing key to authorize.",
+ "v": "The recovery id of the incoming ECDSA signature."
+ }
+ },
+ "authorizeVoteSigner(address,uint8,bytes32,bytes32)": {
+ "details": "v, r, s constitute `signer`'s signature on `msg.sender`.",
+ "params": {
+ "r": "Output value r of the ECDSA signature.",
+ "s": "Output value s of the ECDSA signature.",
+ "signer": "The address of the signing key to authorize.",
+ "v": "The recovery id of the incoming ECDSA signature."
+ }
+ },
+ "batchGetMetadataURL(address[])": {
+ "params": {
+ "accountsToQuery": "The addresses of the accounts to get the metadata for."
+ },
+ "return": "(stringLengths[] - the length of each string in bytes data - all strings concatenated )"
+ },
+ "completeSignerAuthorization(address,bytes32)": {
+ "params": {
+ "account": "The address of account that authorized signing.",
+ "role": "The role to finish authorizing for."
+ }
+ },
+ "constructor": {
+ "params": {
+ "test": "Set to true to skip implementation initialization"
+ }
+ },
+ "createAccount()": {
+ "return": "True if account creation succeeded."
+ },
+ "getAttestationSigner(address)": {
+ "params": {
+ "account": "The address of the account."
+ },
+ "return": "The address with which the account can sign attestations."
+ },
+ "getDataEncryptionKey(address)": {
+ "params": {
+ "account": "The address of the account to get the key for"
+ },
+ "return": "dataEncryptionKey secp256k1 public key for data encryption. Preferably compressed."
+ },
+ "getDefaultSigner(address,bytes32)": {
+ "params": {
+ "account": "The address of the account.",
+ "role": "The role of the signer."
+ }
+ },
+ "getIndexedSigner(address,bytes32)": {
+ "params": {
+ "account": "The address of the account.",
+ "role": "The role of the signer."
+ }
+ },
+ "getLegacySigner(address,bytes32)": {
+ "params": {
+ "_account": "The address of the account.",
+ "role": "The role of the signer."
+ }
+ },
+ "getMetadataURL(address)": {
+ "params": {
+ "account": "The address of the account to get the metadata for."
+ },
+ "return": "metadataURL The URL to access the metadata."
+ },
+ "getName(address)": {
+ "params": {
+ "account": "The address of the account to get the name for."
+ },
+ "return": "name The name of the account."
+ },
+ "getOffchainStorageRoots(address)": {
+ "params": {
+ "account": "The account whose storage roots to return."
+ },
+ "return": "List of storage root URLs."
+ },
+ "getPaymentDelegation(address)": {
+ "params": {
+ "account": "Account of the validator."
+ },
+ "return": "Beneficiary address and fraction of payment delegated."
+ },
+ "getRoleAuthorizationSigner(address,address,bytes32,uint8,bytes32,bytes32)": {
+ "params": {
+ "account": "The `account` property signed over in the EIP712 signature",
+ "r": "Output value r of the ECDSA signature.",
+ "role": "The `role` property signed over in the EIP712 signature",
+ "s": "Output value s of the ECDSA signature.",
+ "signer": "The `signer` property signed over in the EIP712 signature",
+ "v": "The recovery id of the incoming ECDSA signature."
+ },
+ "return": "The address that signed the provided role authorization."
+ },
+ "getValidatorSigner(address)": {
+ "params": {
+ "account": "The address of the account."
+ },
+ "return": "The address with which the account can register a validator or group."
+ },
+ "getVersionNumber()": {
+ "return": "The storage, major, minor, and patch version of the contract."
+ },
+ "getVoteSigner(address)": {
+ "params": {
+ "account": "The address of the account."
+ },
+ "return": "The address with which the account can sign votes."
+ },
+ "getWalletAddress(address)": {
+ "params": {
+ "account": "The address of the account to get the wallet address for"
+ },
+ "return": "Wallet address"
+ },
+ "hasAuthorizedAttestationSigner(address)": {
+ "params": {
+ "account": "The address of the account."
+ },
+ "return": "Whether the account has specified a dedicated attestation signer."
+ },
+ "hasAuthorizedSigner(address,string)": {
+ "details": "See `hasIndexedSigner` for more gas efficient call."
+ },
+ "hasAuthorizedValidatorSigner(address)": {
+ "params": {
+ "account": "The address of the account."
+ },
+ "return": "Whether the account has specified a dedicated validator signer."
+ },
+ "hasAuthorizedVoteSigner(address)": {
+ "params": {
+ "account": "The address of the account."
+ },
+ "return": "Whether the account has specified a dedicated vote signer."
+ },
+ "initialize(address)": {
+ "params": {
+ "registryAddress": "The address of the registry core smart contract."
+ }
+ },
+ "isAccount(address)": {
+ "params": {
+ "account": "The address of the account"
+ },
+ "return": "Returns `true` if account exists. Returns `false` otherwise."
+ },
+ "isAuthorizedSigner(address)": {
+ "params": {
+ "signer": "The possibly authorized address."
+ },
+ "return": "Returns `true` if authorized. Returns `false` otherwise."
+ },
+ "isDefaultSigner(address,address,bytes32)": {
+ "params": {
+ "account": "The address of account that authorized signing.",
+ "role": "The role that has been authorized.",
+ "signer": "The address of the signer."
+ }
+ },
+ "isIndexedSigner(address,address,bytes32)": {
+ "params": {
+ "account": "The address of account that authorized signing.",
+ "role": "The role that has been authorized.",
+ "signer": "The address of the signer."
+ }
+ },
+ "isLegacyRole(bytes32)": {
+ "params": {
+ "role": "The role to check"
+ }
+ },
+ "isLegacySigner(address,address,bytes32)": {
+ "params": {
+ "_account": "The address of account that authorized signing.",
+ "role": "The role that has been authorized.",
+ "signer": "The address of the signer."
+ }
+ },
+ "isOwner()": {
+ "details": "Returns true if the caller is the current owner."
+ },
+ "isSigner(address,address,bytes32)": {
+ "params": {
+ "account": "The address of account that authorized signing.",
+ "role": "The role that has been authorized.",
+ "signer": "The address of the signer."
+ }
+ },
+ "owner()": {
+ "details": "Returns the address of the current owner."
+ },
+ "removeDefaultSigner(bytes32)": {
+ "params": {
+ "role": "The role that has been authorized."
+ }
+ },
+ "removeIndexedSigner(bytes32)": {
+ "params": {
+ "role": "The role of the signer."
+ }
+ },
+ "removeSigner(address,bytes32)": {
+ "params": {
+ "role": "The role that has been authorized.",
+ "signer": "The address of the signer."
+ }
+ },
+ "removeStorageRoot(uint256)": {
+ "details": "The order of storage roots may change after this operation (the last storage root will be moved to `index`), be aware of this if removing multiple storage roots at a time.",
+ "params": {
+ "index": "The index of the storage root to be removed in the account's list of storage roots."
+ }
+ },
+ "renounceOwnership()": {
+ "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
+ },
+ "setAccount(string,bytes,address,uint8,bytes32,bytes32)": {
+ "details": "v, r, s constitute `signer`'s signature on `msg.sender` (unless the wallet address is 0x0 or msg.sender).",
+ "params": {
+ "dataEncryptionKey": "secp256k1 public key for data encryption. Preferably compressed.",
+ "name": "A string to set as the name of the account",
+ "r": "Output value r of the ECDSA signature.",
+ "s": "Output value s of the ECDSA signature.",
+ "v": "The recovery id of the incoming ECDSA signature.",
+ "walletAddress": "The wallet address to set for the account"
+ }
+ },
+ "setAccountDataEncryptionKey(bytes)": {
+ "params": {
+ "dataEncryptionKey": "secp256k1 public key for data encryption. Preferably compressed."
+ }
+ },
+ "setIndexedSigner(address,bytes32)": {
+ "params": {
+ "role": "the role to register a default signer for",
+ "signer": "the address to set as default"
+ }
+ },
+ "setMetadataURL(string)": {
+ "params": {
+ "metadataURL": "The URL to access the metadata."
+ }
+ },
+ "setName(string)": {
+ "params": {
+ "name": "The name to set."
+ }
+ },
+ "setPaymentDelegation(address,uint256)": {
+ "details": "Use `deletePaymentDelegation` to unset the payment delegation.",
+ "params": {
+ "beneficiary": "The address that should receive a portion of validator payments.",
+ "fraction": "The fraction of the validator's payment that should be diverted to `beneficiary` every epoch, given as FixidityLib value. Must not be greater than 1."
+ }
+ },
+ "setRegistry(address)": {
+ "params": {
+ "registryAddress": "The address of a registry contract for routing to other contracts."
+ }
+ },
+ "setWalletAddress(address,uint8,bytes32,bytes32)": {
+ "details": "Wallet address can be zero. This means that the owner of the wallet does not want to be paid directly without interaction, and instead wants users to contact them, using the data encryption key, and arrange a payment.v, r, s constitute `signer`'s signature on `msg.sender` (unless the wallet address is 0x0 or msg.sender).",
+ "params": {
+ "r": "Output value r of the ECDSA signature.",
+ "s": "Output value s of the ECDSA signature.",
+ "v": "The recovery id of the incoming ECDSA signature.",
+ "walletAddress": "The wallet address to set for the account"
+ }
+ },
+ "signerToAccount(address)": {
+ "details": "Fails if the `signer` is not an account or previously authorized signer.",
+ "params": {
+ "signer": "The address of the account or previously authorized signer."
+ },
+ "return": "The associated account."
+ },
+ "transferOwnership(address)": {
+ "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
+ },
+ "validatorSignerToAccount(address)": {
+ "details": "Fails if the `signer` is not an account or currently authorized validator.",
+ "params": {
+ "signer": "The address of an account or currently authorized validator signer."
+ },
+ "return": "The associated account."
+ },
+ "voteSignerToAccount(address)": {
+ "details": "Fails if the `signer` is not an account or currently authorized vote signer.",
+ "params": {
+ "signer": "The address of the account or currently authorized vote signer."
+ },
+ "return": "The associated account."
+ }
+ }
+ },
+ "userdoc": {
+ "methods": {
+ "addStorageRoot(bytes)": {
+ "notice": "Adds a new CIP8 storage root."
+ },
+ "attestationSignerToAccount(address)": {
+ "notice": "Returns the account associated with `signer`."
+ },
+ "authorizeAttestationSigner(address,uint8,bytes32,bytes32)": {
+ "notice": "Authorizes an address to sign attestations on behalf of the account."
+ },
+ "authorizeSigner(address,bytes32)": {
+ "notice": "Begin the process of authorizing an address to sign on behalf of the account"
+ },
+ "authorizeSignerWithSignature(address,bytes32,uint8,bytes32,bytes32)": {
+ "notice": "Authorizes an address to act as a signer, for `role`, on behalf of the account."
+ },
+ "authorizeValidatorSigner(address,uint8,bytes32,bytes32)": {
+ "notice": "Authorizes an address to sign consensus messages on behalf of the account."
+ },
+ "authorizeValidatorSignerWithKeys(address,uint8,bytes32,bytes32,bytes,bytes,bytes)": {
+ "notice": "Authorizes an address to sign consensus messages on behalf of the account."
+ },
+ "authorizeValidatorSignerWithPublicKey(address,uint8,bytes32,bytes32,bytes)": {
+ "notice": "Authorizes an address to sign consensus messages on behalf of the account."
+ },
+ "authorizeVoteSigner(address,uint8,bytes32,bytes32)": {
+ "notice": "Authorizes an address to sign votes on behalf of the account."
+ },
+ "batchGetMetadataURL(address[])": {
+ "notice": "Getter for the metadata of multiple accounts."
+ },
+ "completeSignerAuthorization(address,bytes32)": {
+ "notice": "Finish the process of authorizing an address to sign on behalf of the account. "
+ },
+ "constructor": "Sets initialized == true on implementation contracts",
+ "createAccount()": {
+ "notice": "Creates an account."
+ },
+ "deletePaymentDelegation()": {
+ "notice": "Removes a validator's payment delegation by setting benficiary and fraction to 0."
+ },
+ "getAttestationSigner(address)": {
+ "notice": "Returns the attestation signer for the specified account."
+ },
+ "getDataEncryptionKey(address)": {
+ "notice": "Getter for the data encryption key and version."
+ },
+ "getDefaultSigner(address,bytes32)": {
+ "notice": "Returns the default signer for the specified account and role. If no signer has been specified it will return the account itself."
+ },
+ "getIndexedSigner(address,bytes32)": {
+ "notice": "Returns the indexed signer for the specified account and role. If no signer has been specified it will return the account itself."
+ },
+ "getLegacySigner(address,bytes32)": {
+ "notice": "Returns the legacy signer for the specified account and role. If no signer has been specified it will return the account itself."
+ },
+ "getMetadataURL(address)": {
+ "notice": "Getter for the metadata of an account."
+ },
+ "getName(address)": {
+ "notice": "Getter for the name of an account."
+ },
+ "getOffchainStorageRoots(address)": {
+ "notice": "Returns the full list of offchain storage roots for an account."
+ },
+ "getPaymentDelegation(address)": {
+ "notice": "Gets validator payment delegation settings."
+ },
+ "getRoleAuthorizationSigner(address,address,bytes32,uint8,bytes32,bytes32)": {
+ "notice": "Returns the address that signed the provided role authorization."
+ },
+ "getValidatorSigner(address)": {
+ "notice": "Returns the validator signer for the specified account."
+ },
+ "getVersionNumber()": {
+ "notice": "Returns the storage, major, minor, and patch version of the contract."
+ },
+ "getVoteSigner(address)": {
+ "notice": "Returns the vote signer for the specified account."
+ },
+ "getWalletAddress(address)": {
+ "notice": "Getter for the wallet address for an account"
+ },
+ "hasAuthorizedAttestationSigner(address)": {
+ "notice": "Returns if account has specified a dedicated attestation signer."
+ },
+ "hasAuthorizedSigner(address,string)": {
+ "notice": "Checks whether or not the account has a signer registered for the plaintext role."
+ },
+ "hasAuthorizedValidatorSigner(address)": {
+ "notice": "Returns if account has specified a dedicated validator signer."
+ },
+ "hasAuthorizedVoteSigner(address)": {
+ "notice": "Returns if account has specified a dedicated vote signer."
+ },
+ "hasDefaultSigner(address,bytes32)": {
+ "notice": "Checks whether or not the account has an indexed signer registered for a role"
+ },
+ "hasIndexedSigner(address,bytes32)": {
+ "notice": "Checks whether or not the account has an indexed signer registered for the role"
+ },
+ "hasLegacySigner(address,bytes32)": {
+ "notice": "Checks whether or not the account has an indexed signer registered for one of the legacy roles"
+ },
+ "initialize(address)": {
+ "notice": "Used in place of the constructor to allow the contract to be upgradable via proxy."
+ },
+ "isAccount(address)": {
+ "notice": "Check if an account already exists."
+ },
+ "isAuthorizedSigner(address)": {
+ "notice": "Check if an address has been an authorized signer for an account."
+ },
+ "isDefaultSigner(address,address,bytes32)": {
+ "notice": "Whether or not the signer has been registered as the default signer for role"
+ },
+ "isIndexedSigner(address,address,bytes32)": {
+ "notice": "Whether or not the signer has been registered as an indexed signer for role"
+ },
+ "isLegacyRole(bytes32)": {
+ "notice": "Checks whether the role is one of Vote, Validator or Attestation"
+ },
+ "isLegacySigner(address,address,bytes32)": {
+ "notice": "Whether or not the signer has been registered as the legacy signer for role"
+ },
+ "isSigner(address,address,bytes32)": {
+ "notice": "Whether or not the signer has been registered as a signer for role"
+ },
+ "removeAttestationSigner()": {
+ "notice": "Removes the currently authorized attestation signer for the account Note that the signers cannot be reauthorized after they have been removed."
+ },
+ "removeDefaultSigner(bytes32)": {
+ "notice": "Removes the signer for a default role."
+ },
+ "removeIndexedSigner(bytes32)": {
+ "notice": "Removes the currently authorized and indexed signer for a specific role"
+ },
+ "removeSigner(address,bytes32)": {
+ "notice": "Removes the currently authorized signer for a specific role and if the signer is indexed, remove that as well."
+ },
+ "removeStorageRoot(uint256)": {
+ "notice": "Removes a CIP8 storage root."
+ },
+ "removeValidatorSigner()": {
+ "notice": "Removes the currently authorized validator signer for the account Note that the signers cannot be reauthorized after they have been removed."
+ },
+ "removeVoteSigner()": {
+ "notice": "Removes the currently authorized vote signer for the account. Note that the signers cannot be reauthorized after they have been removed."
+ },
+ "setAccount(string,bytes,address,uint8,bytes32,bytes32)": {
+ "notice": "Convenience Setter for the dataEncryptionKey and wallet address for an account"
+ },
+ "setAccountDataEncryptionKey(bytes)": {
+ "notice": "Setter for the data encryption key and version."
+ },
+ "setEip712DomainSeparator()": {
+ "notice": "Sets the EIP712 domain separator for the Celo Accounts abstraction."
+ },
+ "setIndexedSigner(address,bytes32)": {
+ "notice": "Set the indexed signer for a specific role"
+ },
+ "setMetadataURL(string)": {
+ "notice": "Setter for the metadata of an account."
+ },
+ "setName(string)": {
+ "notice": "Setter for the name of an account."
+ },
+ "setPaymentDelegation(address,uint256)": {
+ "notice": "Sets validator payment delegation settings."
+ },
+ "setRegistry(address)": {
+ "notice": "Updates the address pointing to a Registry contract."
+ },
+ "setWalletAddress(address,uint8,bytes32,bytes32)": {
+ "notice": "Setter for the wallet address for an account"
+ },
+ "signerToAccount(address)": {
+ "notice": "Returns the account associated with `signer`."
+ },
+ "validatorSignerToAccount(address)": {
+ "notice": "Returns the account associated with `signer`."
+ },
+ "voteSignerToAccount(address)": {
+ "notice": "Returns the account associated with `signer`."
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/devtip/packages/react-app/abis/Escrow.json b/devtip/packages/react-app/abis/Escrow.json
new file mode 100644
index 00000000..ab2df242
--- /dev/null
+++ b/devtip/packages/react-app/abis/Escrow.json
@@ -0,0 +1,31778 @@
+{
+ "contractName": "Escrow",
+ "abi": [
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "test",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "trustedIssuer",
+ "type": "address"
+ }
+ ],
+ "name": "DefaultTrustedIssuerAdded",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "trustedIssuer",
+ "type": "address"
+ }
+ ],
+ "name": "DefaultTrustedIssuerRemoved",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousOwner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "OwnershipTransferred",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "identifier",
+ "type": "bytes32"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "by",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "token",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "paymentId",
+ "type": "address"
+ }
+ ],
+ "name": "Revocation",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "identifier",
+ "type": "bytes32"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "token",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "paymentId",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "minAttestations",
+ "type": "uint256"
+ }
+ ],
+ "name": "Transfer",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "paymentId",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address[]",
+ "name": "trustedIssuers",
+ "type": "address[]"
+ }
+ ],
+ "name": "TrustedIssuersSet",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "paymentId",
+ "type": "address"
+ }
+ ],
+ "name": "TrustedIssuersUnset",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "identifier",
+ "type": "bytes32"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "token",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "paymentId",
+ "type": "address"
+ }
+ ],
+ "name": "Withdrawal",
+ "type": "event"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "MAX_TRUSTED_ISSUERS_PER_PAYMENT",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "defaultTrustedIssuers",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "escrowedPayments",
+ "outputs": [
+ {
+ "internalType": "bytes32",
+ "name": "recipientIdentifier",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "address",
+ "name": "sender",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "token",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "sentIndex",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "receivedIndex",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "timestamp",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "expirySeconds",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "minAttestations",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "initialized",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isOwner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "owner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "receivedPaymentIds",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "registry",
+ "outputs": [
+ {
+ "internalType": "contract IRegistry",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "registryContract",
+ "outputs": [
+ {
+ "internalType": "contract IRegistry",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "renounceOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "sentPaymentIds",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "transferOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "trustedIssuersPerPayment",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "getVersionNumber",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "pure",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "initialize",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "trustedIssuer",
+ "type": "address"
+ }
+ ],
+ "name": "addDefaultTrustedIssuer",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "trustedIssuer",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "index",
+ "type": "uint256"
+ }
+ ],
+ "name": "removeDefaultTrustedIssuer",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "identifier",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "address",
+ "name": "token",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "expirySeconds",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "paymentId",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "minAttestations",
+ "type": "uint256"
+ }
+ ],
+ "name": "transfer",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "identifier",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "address",
+ "name": "token",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "expirySeconds",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "paymentId",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "minAttestations",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address[]",
+ "name": "trustedIssuers",
+ "type": "address[]"
+ }
+ ],
+ "name": "transferWithTrustedIssuers",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "paymentId",
+ "type": "address"
+ },
+ {
+ "internalType": "uint8",
+ "name": "v",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "r",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "s",
+ "type": "bytes32"
+ }
+ ],
+ "name": "withdraw",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "paymentId",
+ "type": "address"
+ }
+ ],
+ "name": "revoke",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "identifier",
+ "type": "bytes32"
+ }
+ ],
+ "name": "getReceivedPaymentIds",
+ "outputs": [
+ {
+ "internalType": "address[]",
+ "name": "",
+ "type": "address[]"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "sender",
+ "type": "address"
+ }
+ ],
+ "name": "getSentPaymentIds",
+ "outputs": [
+ {
+ "internalType": "address[]",
+ "name": "",
+ "type": "address[]"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "paymentId",
+ "type": "address"
+ }
+ ],
+ "name": "getTrustedIssuersPerPayment",
+ "outputs": [
+ {
+ "internalType": "address[]",
+ "name": "",
+ "type": "address[]"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "getDefaultTrustedIssuers",
+ "outputs": [
+ {
+ "internalType": "address[]",
+ "name": "",
+ "type": "address[]"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ }
+ ],
+ "metadata": "{\"compiler\":{\"version\":\"0.5.13+commit.5b0b510c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"test\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trustedIssuer\",\"type\":\"address\"}],\"name\":\"DefaultTrustedIssuerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trustedIssuer\",\"type\":\"address\"}],\"name\":\"DefaultTrustedIssuerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"by\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"paymentId\",\"type\":\"address\"}],\"name\":\"Revocation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"paymentId\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minAttestations\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"paymentId\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"trustedIssuers\",\"type\":\"address[]\"}],\"name\":\"TrustedIssuersSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"paymentId\",\"type\":\"address\"}],\"name\":\"TrustedIssuersUnset\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"paymentId\",\"type\":\"address\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_TRUSTED_ISSUERS_PER_PAYMENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"trustedIssuer\",\"type\":\"address\"}],\"name\":\"addDefaultTrustedIssuer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"defaultTrustedIssuers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"escrowedPayments\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"recipientIdentifier\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sentIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"receivedIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirySeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAttestations\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getDefaultTrustedIssuers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"}],\"name\":\"getReceivedPaymentIds\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"getSentPaymentIds\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"paymentId\",\"type\":\"address\"}],\"name\":\"getTrustedIssuersPerPayment\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getVersionNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"receivedPaymentIds\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IRegistry\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"registryContract\",\"outputs\":[{\"internalType\":\"contract IRegistry\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"trustedIssuer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"removeDefaultTrustedIssuer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"paymentId\",\"type\":\"address\"}],\"name\":\"revoke\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sentPaymentIds\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirySeconds\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"paymentId\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAttestations\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirySeconds\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"paymentId\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAttestations\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"trustedIssuers\",\"type\":\"address[]\"}],\"name\":\"transferWithTrustedIssuers\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"trustedIssuersPerPayment\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"paymentId\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"addDefaultTrustedIssuer(address)\":{\"details\":\"Throws if trustedIssuer is null or already in defaultTrustedIssuers.Throws if defaultTrustedIssuers is already at max allowed length.\",\"params\":{\"trustedIssuer\":\"Address of the trustedIssuer to add.\"}},\"constructor\":{\"params\":{\"test\":\"Set to true to skip implementation initialization\"}},\"getDefaultTrustedIssuers()\":{\"return\":\"An array of addresses of trusted issuers.\"},\"getReceivedPaymentIds(bytes32)\":{\"params\":{\"identifier\":\"The hash of an identifier of the receiver of the escrowed payment.\"},\"return\":\"An array containing all the IDs of the Escrowed Payments that were received by the specified receiver.\"},\"getSentPaymentIds(address)\":{\"params\":{\"sender\":\"The address of the sender of the escrowed payments.\"},\"return\":\"An array containing all the IDs of the Escrowed Payments that were sent by the specified sender.\"},\"getTrustedIssuersPerPayment(address)\":{\"params\":{\"paymentId\":\"The ID of the payment to get.\"},\"return\":\"An array of addresses of trusted issuers set for an escrowed payment.\"},\"getVersionNumber()\":{\"return\":\"The storage, major, minor, and patch version of the contract.\"},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"removeDefaultTrustedIssuer(address,uint256)\":{\"details\":\"Throws if trustedIssuer is not in defaultTrustedIssuers at index.\",\"params\":{\"index\":\"Index of trustedIssuer in defaultTrustedIssuers.\",\"trustedIssuer\":\"Address of the trustedIssuer to remove.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"revoke(address)\":{\"details\":\"Throws if 'token' or 'value' is 0.Throws if msg.sender is not the sender of payment.Throws if redeem time hasn't been reached yet.\",\"params\":{\"paymentId\":\"The ID for the EscrowedPayment struct that contains all relevant information.\"}},\"transfer(bytes32,address,uint256,uint256,address,uint256)\":{\"details\":\"Throws if 'token' or 'value' is 0.Throws if identifier is null and minAttestations > 0.If minAttestations is 0, trustedIssuers will be set to empty list.msg.sender needs to have already approved this contract to transfer\",\"params\":{\"expirySeconds\":\"The number of seconds before the sender can revoke the payment.\",\"identifier\":\"The hashed identifier of a user to transfer to.\",\"minAttestations\":\"The min number of attestations required to withdraw the payment.\",\"paymentId\":\"The address of the temporary wallet associated with this payment. Users must prove ownership of the corresponding private key to withdraw from escrow.\",\"token\":\"The token to be transferred.\",\"value\":\"The amount to be transferred.\"},\"return\":\"True if transfer succeeded.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"transferWithTrustedIssuers(bytes32,address,uint256,uint256,address,uint256,address[])\":{\"details\":\"Throws if 'token' or 'value' is 0.Throws if identifier is null and minAttestations > 0.Throws if minAttestations == 0 but trustedIssuers are provided.msg.sender needs to have already approved this contract to transfer.\",\"params\":{\"expirySeconds\":\"The number of seconds before the sender can revoke the payment.\",\"identifier\":\"The hashed identifier of a user to transfer to.\",\"minAttestations\":\"The min number of attestations required to withdraw the payment.\",\"paymentId\":\"The address of the temporary wallet associated with this payment. Users must prove ownership of the corresponding private key to withdraw from escrow.\",\"token\":\"The token to be transferred.\",\"trustedIssuers\":\"Array of issuers whose attestations in FederatedAttestations.sol will be accepted to prove ownership over an identifier.\",\"value\":\"The amount to be transferred.\"},\"return\":\"True if transfer succeeded.\"},\"withdraw(address,uint8,bytes32,bytes32)\":{\"details\":\"Throws if 'token' or 'value' is 0.Throws if msg.sender does not prove ownership of the withdraw key.\",\"params\":{\"paymentId\":\"The ID for the EscrowedPayment struct that contains all relevant information.\",\"r\":\"Output value r of the ECDSA signature.\",\"s\":\"Output value s of the ECDSA signature.\",\"v\":\"The recovery id of the incoming ECDSA signature.\"},\"return\":\"True if withdraw succeeded.\"}}},\"userdoc\":{\"methods\":{\"addDefaultTrustedIssuer(address)\":{\"notice\":\"Add an address to the defaultTrustedIssuers list.\"},\"constructor\":\"Sets initialized == true on implementation contracts\",\"getDefaultTrustedIssuers()\":{\"notice\":\"Gets trusted issuers set as default for payments by `transfer` function.\"},\"getReceivedPaymentIds(bytes32)\":{\"notice\":\"Gets array of all Escrowed Payments received by identifier.\"},\"getSentPaymentIds(address)\":{\"notice\":\"Gets array of all Escrowed Payment IDs sent by sender.\"},\"getTrustedIssuersPerPayment(address)\":{\"notice\":\"Gets array of all trusted issuers set per paymentId.\"},\"getVersionNumber()\":{\"notice\":\"Returns the storage, major, minor, and patch version of the contract.\"},\"initialize()\":{\"notice\":\"Used in place of the constructor to allow the contract to be upgradable via proxy.\"},\"removeDefaultTrustedIssuer(address,uint256)\":{\"notice\":\"Remove an address from the defaultTrustedIssuers list.\"},\"revoke(address)\":{\"notice\":\"Revokes tokens for a sender who is redeeming a payment after it has expired.\"},\"transfer(bytes32,address,uint256,uint256,address,uint256)\":{\"notice\":\"Transfer tokens to a specific user. Supports both identity with privacy (an empty identifier and 0 minAttestations) and without (with identifier and minAttestations). Sets trustedIssuers to the issuers listed in `defaultTrustedIssuers`. (To override this and set custom trusted issuers, use `transferWithTrustedIssuers`.)\"},\"transferWithTrustedIssuers(bytes32,address,uint256,uint256,address,uint256,address[])\":{\"notice\":\"Transfer tokens to a specific user. Supports both identity with privacy (an empty identifier and 0 minAttestations) and without (with identifier and attestations completed by trustedIssuers).\"},\"withdraw(address,uint8,bytes32,bytes32)\":{\"notice\":\"Withdraws tokens for a verified user.\"}}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/identity/Escrow.sol\":\"Escrow\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with GSN meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\ncontract Context {\\n // Empty internal constructor, to prevent people from mistakenly deploying\\n // an instance of this contract, which should be used via inheritance.\\n constructor () internal { }\\n // solhint-disable-previous-line no-empty-blocks\\n\\n function _msgSender() internal view returns (address payable) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view returns (bytes memory) {\\n this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\"},\"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * NOTE: This call _does not revert_ if the signature is invalid, or\\n * if the signer is otherwise unable to be retrieved. In those scenarios,\\n * the zero address is returned.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n // Check the signature length\\n if (signature.length != 65) {\\n return (address(0));\\n }\\n\\n // Divide the signature in r, s and v variables\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (281): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (282): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n return address(0);\\n }\\n\\n if (v != 27 && v != 28) {\\n return address(0);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n return ecrecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * replicates the behavior of the\\n * https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign[`eth_sign`]\\n * JSON-RPC method.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n }\\n}\\n\",\"keccak256\":\"0xc89ea7e48ba477b1781b24ae963442fff1bb2af33b6178dad679a3fa2f5ab2de\"},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\\n * checks.\\n *\\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\\n * in bugs, because programmers usually assume that an overflow raises an\\n * error, which is the standard behavior in high level programming languages.\\n * `SafeMath` restores this intuition by reverting the transaction when an\\n * operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n */\\nlibrary SafeMath {\\n /**\\n * @dev Returns the addition of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\n * - Addition cannot overflow.\\n */\\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n uint256 c = a + b;\\n require(c >= a, \\\"SafeMath: addition overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `*` operator.\\n *\\n * Requirements:\\n * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n // benefit is lost if 'b' is also tested.\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n if (a == 0) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b != 0, errorMessage);\\n return a % b;\\n }\\n}\\n\",\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\"},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\nimport \\\"../GSN/Context.sol\\\";\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\ncontract Ownable is Context {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n constructor () internal {\\n address msgSender = _msgSender();\\n _owner = msgSender;\\n emit OwnershipTransferred(address(0), msgSender);\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n require(isOwner(), \\\"Ownable: caller is not the owner\\\");\\n _;\\n }\\n\\n /**\\n * @dev Returns true if the caller is the current owner.\\n */\\n function isOwner() public view returns (bool) {\\n return _msgSender() == _owner;\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions anymore. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby removing any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public onlyOwner {\\n emit OwnershipTransferred(_owner, address(0));\\n _owner = address(0);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public onlyOwner {\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n */\\n function _transferOwnership(address newOwner) internal {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n emit OwnershipTransferred(_owner, newOwner);\\n _owner = newOwner;\\n }\\n}\\n\",\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\"},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\nimport \\\"../../GSN/Context.sol\\\";\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"../../math/SafeMath.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20Mintable}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin guidelines: functions revert instead\\n * of returning `false` on failure. This behavior is nonetheless conventional\\n * and does not conflict with the expectations of ERC20 applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20 is Context, IERC20 {\\n using SafeMath for uint256;\\n\\n mapping (address => uint256) private _balances;\\n\\n mapping (address => mapping (address => uint256)) private _allowances;\\n\\n uint256 private _totalSupply;\\n\\n /**\\n * @dev See {IERC20-totalSupply}.\\n */\\n function totalSupply() public view returns (uint256) {\\n return _totalSupply;\\n }\\n\\n /**\\n * @dev See {IERC20-balanceOf}.\\n */\\n function balanceOf(address account) public view returns (uint256) {\\n return _balances[account];\\n }\\n\\n /**\\n * @dev See {IERC20-transfer}.\\n *\\n * Requirements:\\n *\\n * - `recipient` cannot be the zero address.\\n * - the caller must have a balance of at least `amount`.\\n */\\n function transfer(address recipient, uint256 amount) public returns (bool) {\\n _transfer(_msgSender(), recipient, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-allowance}.\\n */\\n function allowance(address owner, address spender) public view returns (uint256) {\\n return _allowances[owner][spender];\\n }\\n\\n /**\\n * @dev See {IERC20-approve}.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function approve(address spender, uint256 amount) public returns (bool) {\\n _approve(_msgSender(), spender, amount);\\n return true;\\n }\\n\\n /**\\n * @dev See {IERC20-transferFrom}.\\n *\\n * Emits an {Approval} event indicating the updated allowance. This is not\\n * required by the EIP. See the note at the beginning of {ERC20};\\n *\\n * Requirements:\\n * - `sender` and `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n * - the caller must have allowance for `sender`'s tokens of at least\\n * `amount`.\\n */\\n function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {\\n _transfer(sender, recipient, amount);\\n _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, \\\"ERC20: transfer amount exceeds allowance\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically increases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n */\\n function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));\\n return true;\\n }\\n\\n /**\\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n *\\n * This is an alternative to {approve} that can be used as a mitigation for\\n * problems described in {IERC20-approve}.\\n *\\n * Emits an {Approval} event indicating the updated allowance.\\n *\\n * Requirements:\\n *\\n * - `spender` cannot be the zero address.\\n * - `spender` must have allowance for the caller of at least\\n * `subtractedValue`.\\n */\\n function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {\\n _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, \\\"ERC20: decreased allowance below zero\\\"));\\n return true;\\n }\\n\\n /**\\n * @dev Moves tokens `amount` from `sender` to `recipient`.\\n *\\n * This is internal function is equivalent to {transfer}, and can be used to\\n * e.g. implement automatic token fees, slashing mechanisms, etc.\\n *\\n * Emits a {Transfer} event.\\n *\\n * Requirements:\\n *\\n * - `sender` cannot be the zero address.\\n * - `recipient` cannot be the zero address.\\n * - `sender` must have a balance of at least `amount`.\\n */\\n function _transfer(address sender, address recipient, uint256 amount) internal {\\n require(sender != address(0), \\\"ERC20: transfer from the zero address\\\");\\n require(recipient != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n _balances[sender] = _balances[sender].sub(amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n _balances[recipient] = _balances[recipient].add(amount);\\n emit Transfer(sender, recipient, amount);\\n }\\n\\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n * the total supply.\\n *\\n * Emits a {Transfer} event with `from` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `to` cannot be the zero address.\\n */\\n function _mint(address account, uint256 amount) internal {\\n require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n _totalSupply = _totalSupply.add(amount);\\n _balances[account] = _balances[account].add(amount);\\n emit Transfer(address(0), account, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`, reducing the\\n * total supply.\\n *\\n * Emits a {Transfer} event with `to` set to the zero address.\\n *\\n * Requirements\\n *\\n * - `account` cannot be the zero address.\\n * - `account` must have at least `amount` tokens.\\n */\\n function _burn(address account, uint256 amount) internal {\\n require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n _balances[account] = _balances[account].sub(amount, \\\"ERC20: burn amount exceeds balance\\\");\\n _totalSupply = _totalSupply.sub(amount);\\n emit Transfer(account, address(0), amount);\\n }\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.\\n *\\n * This is internal function is equivalent to `approve`, and can be used to\\n * e.g. set automatic allowances for certain subsystems, etc.\\n *\\n * Emits an {Approval} event.\\n *\\n * Requirements:\\n *\\n * - `owner` cannot be the zero address.\\n * - `spender` cannot be the zero address.\\n */\\n function _approve(address owner, address spender, uint256 amount) internal {\\n require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n _allowances[owner][spender] = amount;\\n emit Approval(owner, spender, amount);\\n }\\n\\n /**\\n * @dev Destroys `amount` tokens from `account`.`amount` is then deducted\\n * from the caller's allowance.\\n *\\n * See {_burn} and {_approve}.\\n */\\n function _burnFrom(address account, uint256 amount) internal {\\n _burn(account, amount);\\n _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, \\\"ERC20: burn amount exceeds allowance\\\"));\\n }\\n}\\n\",\"keccak256\":\"0xb15af804e2bc97db51e4e103f13de9fe13f87e6b835d7a88c897966c0e58506e\"},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {ERC20Detailed}.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\"},\"openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"../../math/SafeMath.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n using SafeMath for uint256;\\n using Address for address;\\n\\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n function safeApprove(IERC20 token, address spender, uint256 value) internal {\\n // safeApprove should only be called when setting an initial allowance,\\n // or when resetting it to zero. To increase and decrease it, use\\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n // solhint-disable-next-line max-line-length\\n require((value == 0) || (token.allowance(address(this), spender) == 0),\\n \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n );\\n callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n }\\n\\n function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n uint256 newAllowance = token.allowance(address(this), spender).add(value);\\n callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n\\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n uint256 newAllowance = token.allowance(address(this), spender).sub(value, \\\"SafeERC20: decreased allowance below zero\\\");\\n callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n */\\n function callOptionalReturn(IERC20 token, bytes memory data) private {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves.\\n\\n // A Solidity high level call has three parts:\\n // 1. The target address is checked to verify it contains contract code\\n // 2. The call itself is made, and success asserted\\n // 3. The return value is decoded, which in turn checks the size of the returned data.\\n // solhint-disable-next-line max-line-length\\n require(address(token).isContract(), \\\"SafeERC20: call to non-contract\\\");\\n\\n // solhint-disable-next-line avoid-low-level-calls\\n (bool success, bytes memory returndata) = address(token).call(data);\\n require(success, \\\"SafeERC20: low-level call failed\\\");\\n\\n if (returndata.length > 0) { // Return data is optional\\n // solhint-disable-next-line max-line-length\\n require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n }\\n}\\n\",\"keccak256\":\"0x6f2c9955d65c522b80f4b8792f076512d2df947d2112cbc4d98a4781ed42ede2\"},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"content\":\"pragma solidity ^0.5.5;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following \\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // According to EIP-1052, 0x0 is the value returned for not-yet created accounts\\n // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned\\n // for accounts without code, i.e. `keccak256('')`\\n bytes32 codehash;\\n bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;\\n // solhint-disable-next-line no-inline-assembly\\n assembly { codehash := extcodehash(account) }\\n return (codehash != accountHash && codehash != 0x0);\\n }\\n\\n /**\\n * @dev Converts an `address` into `address payable`. Note that this is\\n * simply a type cast: the actual underlying value is not changed.\\n *\\n * _Available since v2.4.0._\\n */\\n function toPayable(address account) internal pure returns (address payable) {\\n return address(uint160(account));\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n *\\n * _Available since v2.4.0._\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n // solhint-disable-next-line avoid-call-value\\n (bool success, ) = recipient.call.value(amount)(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n}\\n\",\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\"},\"project:/contracts/common/Initializable.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ncontract Initializable {\\n bool public initialized;\\n\\n constructor(bool testingDeployment) public {\\n if (!testingDeployment) {\\n initialized = true;\\n }\\n }\\n\\n modifier initializer() {\\n require(!initialized, \\\"contract already initialized\\\");\\n initialized = true;\\n _;\\n }\\n}\\n\",\"keccak256\":\"0xad98825b5d3181f4ce2d2dbe84adeb0cd7960fd80fafb0813539d6d96ba42ab8\"},\"project:/contracts/common/Signatures.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\\\";\\n\\nlibrary Signatures {\\n /**\\n * @notice Given a signed address, returns the signer of the address.\\n * @param message The address that was signed.\\n * @param v The recovery id of the incoming ECDSA signature.\\n * @param r Output value r of the ECDSA signature.\\n * @param s Output value s of the ECDSA signature.\\n */\\n function getSignerOfAddress(address message, uint8 v, bytes32 r, bytes32 s)\\n public\\n pure\\n returns (address)\\n {\\n bytes32 hash = keccak256(abi.encodePacked(message));\\n return getSignerOfMessageHash(hash, v, r, s);\\n }\\n\\n /**\\n * @notice Given a message hash, returns the signer of the address.\\n * @param messageHash The hash of a message.\\n * @param v The recovery id of the incoming ECDSA signature.\\n * @param r Output value r of the ECDSA signature.\\n * @param s Output value s of the ECDSA signature.\\n */\\n function getSignerOfMessageHash(bytes32 messageHash, uint8 v, bytes32 r, bytes32 s)\\n public\\n pure\\n returns (address)\\n {\\n bytes memory signature = new bytes(65);\\n // Concatenate (r, s, v) into signature.\\n assembly {\\n mstore(add(signature, 32), r)\\n mstore(add(signature, 64), s)\\n mstore8(add(signature, 96), v)\\n }\\n bytes32 prefixedHash = ECDSA.toEthSignedMessageHash(messageHash);\\n return ECDSA.recover(prefixedHash, signature);\\n }\\n\\n /**\\n * @notice Given a domain separator and a structHash, construct the typed data hash\\n * @param eip712DomainSeparator Context specific domain separator\\n * @param structHash hash of the typed data struct\\n * @return The EIP712 typed data hash\\n */\\n function toEthSignedTypedDataHash(bytes32 eip712DomainSeparator, bytes32 structHash)\\n public\\n pure\\n returns (bytes32)\\n {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", eip712DomainSeparator, structHash));\\n }\\n\\n /**\\n * @notice Given a domain separator and a structHash and a signature return the signer\\n * @param eip712DomainSeparator Context specific domain separator\\n * @param structHash hash of the typed data struct\\n * @param v The recovery id of the incoming ECDSA signature.\\n * @param r Output value r of the ECDSA signature.\\n * @param s Output value s of the ECDSA signature.\\n */\\n function getSignerOfTypedDataHash(\\n bytes32 eip712DomainSeparator,\\n bytes32 structHash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) public pure returns (address) {\\n bytes memory signature = new bytes(65);\\n // Concatenate (r, s, v) into signature.\\n assembly {\\n mstore(add(signature, 32), r)\\n mstore(add(signature, 64), s)\\n mstore8(add(signature, 96), v)\\n }\\n bytes32 prefixedHash = toEthSignedTypedDataHash(eip712DomainSeparator, structHash);\\n return ECDSA.recover(prefixedHash, signature);\\n }\\n}\\n\",\"keccak256\":\"0xb11ccc01ac5d81c5496828a92536cfc07378e87c0517fe6f8b429a96c41cb21e\"},\"project:/contracts/common/UsingRegistryV2.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"openzeppelin-solidity/contracts/ownership/Ownable.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\\\";\\n\\nimport \\\"./interfaces/IAccounts.sol\\\";\\nimport \\\"./interfaces/IFeeCurrencyWhitelist.sol\\\";\\nimport \\\"./interfaces/IFreezer.sol\\\";\\nimport \\\"./interfaces/IRegistry.sol\\\";\\n\\nimport \\\"../governance/interfaces/IElection.sol\\\";\\nimport \\\"../governance/interfaces/IGovernance.sol\\\";\\nimport \\\"../governance/interfaces/ILockedGold.sol\\\";\\nimport \\\"../governance/interfaces/IValidators.sol\\\";\\n\\nimport \\\"../identity/interfaces/IRandom.sol\\\";\\nimport \\\"../identity/interfaces/IAttestations.sol\\\";\\nimport \\\"../identity/interfaces/IFederatedAttestations.sol\\\";\\n\\nimport \\\"../stability/interfaces/IExchange.sol\\\";\\nimport \\\"../stability/interfaces/IReserve.sol\\\";\\nimport \\\"../stability/interfaces/ISortedOracles.sol\\\";\\nimport \\\"../stability/interfaces/IStableToken.sol\\\";\\n\\ncontract UsingRegistryV2 {\\n address internal constant registryAddress = 0x000000000000000000000000000000000000ce10;\\n IRegistry public constant registryContract = IRegistry(registryAddress);\\n\\n bytes32 internal constant ACCOUNTS_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Accounts\\\"));\\n bytes32 internal constant ATTESTATIONS_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Attestations\\\"));\\n bytes32 internal constant DOWNTIME_SLASHER_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"DowntimeSlasher\\\")\\n );\\n bytes32 internal constant DOUBLE_SIGNING_SLASHER_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"DoubleSigningSlasher\\\")\\n );\\n bytes32 internal constant ELECTION_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Election\\\"));\\n bytes32 internal constant EXCHANGE_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Exchange\\\"));\\n bytes32 internal constant EXCHANGE_EURO_REGISTRY_ID = keccak256(abi.encodePacked(\\\"ExchangeEUR\\\"));\\n bytes32 internal constant EXCHANGE_REAL_REGISTRY_ID = keccak256(abi.encodePacked(\\\"ExchangeBRL\\\"));\\n\\n bytes32 internal constant FEE_CURRENCY_WHITELIST_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"FeeCurrencyWhitelist\\\")\\n );\\n bytes32 internal constant FEDERATED_ATTESTATIONS_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"FederatedAttestations\\\")\\n );\\n bytes32 internal constant FREEZER_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Freezer\\\"));\\n bytes32 internal constant GOLD_TOKEN_REGISTRY_ID = keccak256(abi.encodePacked(\\\"GoldToken\\\"));\\n bytes32 internal constant GOVERNANCE_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Governance\\\"));\\n bytes32 internal constant GOVERNANCE_SLASHER_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"GovernanceSlasher\\\")\\n );\\n bytes32 internal constant LOCKED_GOLD_REGISTRY_ID = keccak256(abi.encodePacked(\\\"LockedGold\\\"));\\n bytes32 internal constant RESERVE_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Reserve\\\"));\\n bytes32 internal constant RANDOM_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Random\\\"));\\n bytes32 internal constant SORTED_ORACLES_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"SortedOracles\\\")\\n );\\n bytes32 internal constant STABLE_TOKEN_REGISTRY_ID = keccak256(abi.encodePacked(\\\"StableToken\\\"));\\n bytes32 internal constant STABLE_EURO_TOKEN_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"StableTokenEUR\\\")\\n );\\n bytes32 internal constant STABLE_REAL_TOKEN_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"StableTokenBRL\\\")\\n );\\n bytes32 internal constant VALIDATORS_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Validators\\\"));\\n\\n modifier onlyRegisteredContract(bytes32 identifierHash) {\\n require(\\n registryContract.getAddressForOrDie(identifierHash) == msg.sender,\\n \\\"only registered contract\\\"\\n );\\n _;\\n }\\n\\n modifier onlyRegisteredContracts(bytes32[] memory identifierHashes) {\\n require(registryContract.isOneOf(identifierHashes, msg.sender), \\\"only registered contracts\\\");\\n _;\\n }\\n\\n function getAccounts() internal view returns (IAccounts) {\\n return IAccounts(registryContract.getAddressForOrDie(ACCOUNTS_REGISTRY_ID));\\n }\\n\\n function getAttestations() internal view returns (IAttestations) {\\n return IAttestations(registryContract.getAddressForOrDie(ATTESTATIONS_REGISTRY_ID));\\n }\\n\\n function getElection() internal view returns (IElection) {\\n return IElection(registryContract.getAddressForOrDie(ELECTION_REGISTRY_ID));\\n }\\n\\n function getExchange() internal view returns (IExchange) {\\n return IExchange(registryContract.getAddressForOrDie(EXCHANGE_REGISTRY_ID));\\n }\\n\\n function getExchangeDollar() internal view returns (IExchange) {\\n return getExchange();\\n }\\n\\n function getExchangeEuro() internal view returns (IExchange) {\\n return IExchange(registryContract.getAddressForOrDie(EXCHANGE_EURO_REGISTRY_ID));\\n }\\n\\n function getExchangeREAL() internal view returns (IExchange) {\\n return IExchange(registryContract.getAddressForOrDie(EXCHANGE_REAL_REGISTRY_ID));\\n }\\n\\n function getFeeCurrencyWhitelistRegistry() internal view returns (IFeeCurrencyWhitelist) {\\n return\\n IFeeCurrencyWhitelist(\\n registryContract.getAddressForOrDie(FEE_CURRENCY_WHITELIST_REGISTRY_ID)\\n );\\n }\\n\\n function getFederatedAttestations() internal view returns (IFederatedAttestations) {\\n return\\n IFederatedAttestations(\\n registryContract.getAddressForOrDie(FEDERATED_ATTESTATIONS_REGISTRY_ID)\\n );\\n }\\n\\n function getFreezer() internal view returns (IFreezer) {\\n return IFreezer(registryContract.getAddressForOrDie(FREEZER_REGISTRY_ID));\\n }\\n\\n function getGoldToken() internal view returns (IERC20) {\\n return IERC20(registryContract.getAddressForOrDie(GOLD_TOKEN_REGISTRY_ID));\\n }\\n\\n function getGovernance() internal view returns (IGovernance) {\\n return IGovernance(registryContract.getAddressForOrDie(GOVERNANCE_REGISTRY_ID));\\n }\\n\\n function getLockedGold() internal view returns (ILockedGold) {\\n return ILockedGold(registryContract.getAddressForOrDie(LOCKED_GOLD_REGISTRY_ID));\\n }\\n\\n function getRandom() internal view returns (IRandom) {\\n return IRandom(registryContract.getAddressForOrDie(RANDOM_REGISTRY_ID));\\n }\\n\\n function getReserve() internal view returns (IReserve) {\\n return IReserve(registryContract.getAddressForOrDie(RESERVE_REGISTRY_ID));\\n }\\n\\n function getSortedOracles() internal view returns (ISortedOracles) {\\n return ISortedOracles(registryContract.getAddressForOrDie(SORTED_ORACLES_REGISTRY_ID));\\n }\\n\\n function getStableToken() internal view returns (IStableToken) {\\n return IStableToken(registryContract.getAddressForOrDie(STABLE_TOKEN_REGISTRY_ID));\\n }\\n\\n function getStableDollarToken() internal view returns (IStableToken) {\\n return getStableToken();\\n }\\n\\n function getStableEuroToken() internal view returns (IStableToken) {\\n return IStableToken(registryContract.getAddressForOrDie(STABLE_EURO_TOKEN_REGISTRY_ID));\\n }\\n\\n function getStableRealToken() internal view returns (IStableToken) {\\n return IStableToken(registryContract.getAddressForOrDie(STABLE_REAL_TOKEN_REGISTRY_ID));\\n }\\n\\n function getValidators() internal view returns (IValidators) {\\n return IValidators(registryContract.getAddressForOrDie(VALIDATORS_REGISTRY_ID));\\n }\\n}\\n\",\"keccak256\":\"0x074e1bd4e0d4a0010ef904a13af1da8590b998ce568054b1f10a2a7af4120372\"},\"project:/contracts/common/UsingRegistryV2BackwardsCompatible.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"./UsingRegistryV2.sol\\\";\\n\\ncontract UsingRegistryV2BackwardsCompatible is UsingRegistryV2 {\\n // Placeholder for registry storage var in UsingRegistry and cannot be renamed\\n // without breaking release tooling.\\n // Use `registryContract` (in UsingRegistryV2) for the actual registry address.\\n IRegistry public registry;\\n}\\n\",\"keccak256\":\"0xaf5d48c4925ba115a205f17c90ad7921d81d381f98b683fc49ef5db8e8ca12c8\"},\"project:/contracts/common/interfaces/IAccounts.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IAccounts {\\n function isAccount(address) external view returns (bool);\\n function voteSignerToAccount(address) external view returns (address);\\n function validatorSignerToAccount(address) external view returns (address);\\n function attestationSignerToAccount(address) external view returns (address);\\n function signerToAccount(address) external view returns (address);\\n function getAttestationSigner(address) external view returns (address);\\n function getValidatorSigner(address) external view returns (address);\\n function getVoteSigner(address) external view returns (address);\\n function hasAuthorizedVoteSigner(address) external view returns (bool);\\n function hasAuthorizedValidatorSigner(address) external view returns (bool);\\n function hasAuthorizedAttestationSigner(address) external view returns (bool);\\n\\n function setAccountDataEncryptionKey(bytes calldata) external;\\n function setMetadataURL(string calldata) external;\\n function setName(string calldata) external;\\n function setWalletAddress(address, uint8, bytes32, bytes32) external;\\n function setAccount(string calldata, bytes calldata, address, uint8, bytes32, bytes32) external;\\n\\n function getDataEncryptionKey(address) external view returns (bytes memory);\\n function getWalletAddress(address) external view returns (address);\\n function getMetadataURL(address) external view returns (string memory);\\n function batchGetMetadataURL(address[] calldata)\\n external\\n view\\n returns (uint256[] memory, bytes memory);\\n function getName(address) external view returns (string memory);\\n\\n function authorizeVoteSigner(address, uint8, bytes32, bytes32) external;\\n function authorizeValidatorSigner(address, uint8, bytes32, bytes32) external;\\n function authorizeValidatorSignerWithPublicKey(address, uint8, bytes32, bytes32, bytes calldata)\\n external;\\n function authorizeValidatorSignerWithKeys(\\n address,\\n uint8,\\n bytes32,\\n bytes32,\\n bytes calldata,\\n bytes calldata,\\n bytes calldata\\n ) external;\\n function authorizeAttestationSigner(address, uint8, bytes32, bytes32) external;\\n function createAccount() external returns (bool);\\n\\n function setPaymentDelegation(address, uint256) external;\\n function getPaymentDelegation(address) external view returns (address, uint256);\\n function isSigner(address, address, bytes32) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x1ec92ced98458b625f5cc7742e7487c6e9c0042ae86bbd4b5cec293363c543ee\"},\"project:/contracts/common/interfaces/ICeloVersionedContract.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface ICeloVersionedContract {\\n /**\\n * @notice Returns the storage, major, minor, and patch version of the contract.\\n * @return The storage, major, minor, and patch version of the contract.\\n */\\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256);\\n}\\n\",\"keccak256\":\"0x9f902faa66069500c7b5e8c9a53ca6afff99dfe6cd3915aa0f3c4fe6a9905ba5\"},\"project:/contracts/common/interfaces/IFeeCurrencyWhitelist.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IFeeCurrencyWhitelist {\\n function addToken(address) external;\\n function getWhitelist() external view returns (address[] memory);\\n}\\n\",\"keccak256\":\"0xd4711baf3e38a0abeb3ef48eaab21aeb917f5e0a185cf463fddeb4bf20277b68\"},\"project:/contracts/common/interfaces/IFreezer.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IFreezer {\\n function isFrozen(address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x12508a9d528d1b63dc06644e9d97e864acc94f8a763cf8555e90bcdf1b2f8b21\"},\"project:/contracts/common/interfaces/IRegistry.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IRegistry {\\n function setAddressFor(string calldata, address) external;\\n function getAddressForOrDie(bytes32) external view returns (address);\\n function getAddressFor(bytes32) external view returns (address);\\n function getAddressForStringOrDie(string calldata identifier) external view returns (address);\\n function getAddressForString(string calldata identifier) external view returns (address);\\n function isOneOf(bytes32[] calldata, address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x78ba82722d28e815c117f33d4659404f0707dab1c9b51f1bce5d4c15d6c94537\"},\"project:/contracts/common/libraries/ReentrancyGuard.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\n/**\\n * @title Helps contracts guard against reentrancy attacks.\\n * @author Remco Bloemen , Eenae \\n * @dev If you mark a function `nonReentrant`, you should also\\n * mark it `external`.\\n */\\ncontract ReentrancyGuard {\\n /// @dev counter to allow mutex lock with only one SSTORE operation\\n uint256 private _guardCounter;\\n\\n constructor() internal {\\n // The counter starts at one to prevent changing it from zero to a non-zero\\n // value, which is a more expensive operation.\\n _guardCounter = 1;\\n }\\n\\n /**\\n * @dev Prevents a contract from calling itself, directly or indirectly.\\n * Calling a `nonReentrant` function from another `nonReentrant`\\n * function is not supported. It is possible to prevent this from happening\\n * by making the `nonReentrant` function external, and make it call a\\n * `private` function that does the actual work.\\n */\\n modifier nonReentrant() {\\n _guardCounter += 1;\\n uint256 localCounter = _guardCounter;\\n _;\\n require(localCounter == _guardCounter, \\\"reentrant call\\\");\\n }\\n}\\n\",\"keccak256\":\"0xa2584554532d7004ca3d2d168cd9dfb7694605f1a32431af4d1b7d834fa6b08d\"},\"project:/contracts/governance/interfaces/IElection.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IElection {\\n function electValidatorSigners() external view returns (address[] memory);\\n function electNValidatorSigners(uint256, uint256) external view returns (address[] memory);\\n function vote(address, uint256, address, address) external returns (bool);\\n function activate(address) external returns (bool);\\n function revokeActive(address, uint256, address, address, uint256) external returns (bool);\\n function revokeAllActive(address, address, address, uint256) external returns (bool);\\n function revokePending(address, uint256, address, address, uint256) external returns (bool);\\n function markGroupIneligible(address) external;\\n function markGroupEligible(address, address, address) external;\\n function forceDecrementVotes(\\n address,\\n uint256,\\n address[] calldata,\\n address[] calldata,\\n uint256[] calldata\\n ) external returns (uint256);\\n\\n // view functions\\n function getElectableValidators() external view returns (uint256, uint256);\\n function getElectabilityThreshold() external view returns (uint256);\\n function getNumVotesReceivable(address) external view returns (uint256);\\n function getTotalVotes() external view returns (uint256);\\n function getActiveVotes() external view returns (uint256);\\n function getTotalVotesByAccount(address) external view returns (uint256);\\n function getPendingVotesForGroupByAccount(address, address) external view returns (uint256);\\n function getActiveVotesForGroupByAccount(address, address) external view returns (uint256);\\n function getTotalVotesForGroupByAccount(address, address) external view returns (uint256);\\n function getActiveVoteUnitsForGroupByAccount(address, address) external view returns (uint256);\\n function getTotalVotesForGroup(address) external view returns (uint256);\\n function getActiveVotesForGroup(address) external view returns (uint256);\\n function getPendingVotesForGroup(address) external view returns (uint256);\\n function getGroupEligibility(address) external view returns (bool);\\n function getGroupEpochRewards(address, uint256, uint256[] calldata)\\n external\\n view\\n returns (uint256);\\n function getGroupsVotedForByAccount(address) external view returns (address[] memory);\\n function getEligibleValidatorGroups() external view returns (address[] memory);\\n function getTotalVotesForEligibleValidatorGroups()\\n external\\n view\\n returns (address[] memory, uint256[] memory);\\n function getCurrentValidatorSigners() external view returns (address[] memory);\\n function canReceiveVotes(address, uint256) external view returns (bool);\\n function hasActivatablePendingVotes(address, address) external view returns (bool);\\n\\n // only owner\\n function setElectableValidators(uint256, uint256) external returns (bool);\\n function setMaxNumGroupsVotedFor(uint256) external returns (bool);\\n function setElectabilityThreshold(uint256) external returns (bool);\\n\\n // only VM\\n function distributeEpochRewards(address, uint256, address, address) external;\\n}\\n\",\"keccak256\":\"0xebcd0d7dbbb2df503967ad63c9ddd437cef89a94ba2cc2f9ce274f41a4c901ee\"},\"project:/contracts/governance/interfaces/IGovernance.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IGovernance {\\n function isVoting(address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x227bf6a6b56411c368c9752761e2202ad71f2199deb2b114b125712b63372b7e\"},\"project:/contracts/governance/interfaces/ILockedGold.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface ILockedGold {\\n function incrementNonvotingAccountBalance(address, uint256) external;\\n function decrementNonvotingAccountBalance(address, uint256) external;\\n function getAccountTotalLockedGold(address) external view returns (uint256);\\n function getTotalLockedGold() external view returns (uint256);\\n function getPendingWithdrawals(address)\\n external\\n view\\n returns (uint256[] memory, uint256[] memory);\\n function getTotalPendingWithdrawals(address) external view returns (uint256);\\n function lock() external payable;\\n function unlock(uint256) external;\\n function relock(uint256, uint256) external;\\n function withdraw(uint256) external;\\n function slash(\\n address account,\\n uint256 penalty,\\n address reporter,\\n uint256 reward,\\n address[] calldata lessers,\\n address[] calldata greaters,\\n uint256[] calldata indices\\n ) external;\\n function isSlasher(address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x577d01d8a1fbf47980fb5ffd36de2084ec255889b15671adfecd3a285df4f253\"},\"project:/contracts/governance/interfaces/IValidators.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IValidators {\\n function registerValidator(bytes calldata, bytes calldata, bytes calldata)\\n external\\n returns (bool);\\n function deregisterValidator(uint256) external returns (bool);\\n function affiliate(address) external returns (bool);\\n function deaffiliate() external returns (bool);\\n function updateBlsPublicKey(bytes calldata, bytes calldata) external returns (bool);\\n function registerValidatorGroup(uint256) external returns (bool);\\n function deregisterValidatorGroup(uint256) external returns (bool);\\n function addMember(address) external returns (bool);\\n function addFirstMember(address, address, address) external returns (bool);\\n function removeMember(address) external returns (bool);\\n function reorderMember(address, address, address) external returns (bool);\\n function updateCommission() external;\\n function setNextCommissionUpdate(uint256) external;\\n function resetSlashingMultiplier() external;\\n\\n // only owner\\n function setCommissionUpdateDelay(uint256) external;\\n function setMaxGroupSize(uint256) external returns (bool);\\n function setMembershipHistoryLength(uint256) external returns (bool);\\n function setValidatorScoreParameters(uint256, uint256) external returns (bool);\\n function setGroupLockedGoldRequirements(uint256, uint256) external returns (bool);\\n function setValidatorLockedGoldRequirements(uint256, uint256) external returns (bool);\\n function setSlashingMultiplierResetPeriod(uint256) external;\\n\\n // view functions\\n function getMaxGroupSize() external view returns (uint256);\\n function getCommissionUpdateDelay() external view returns (uint256);\\n function getValidatorScoreParameters() external view returns (uint256, uint256);\\n function getMembershipHistory(address)\\n external\\n view\\n returns (uint256[] memory, address[] memory, uint256, uint256);\\n function calculateEpochScore(uint256) external view returns (uint256);\\n function calculateGroupEpochScore(uint256[] calldata) external view returns (uint256);\\n function getAccountLockedGoldRequirement(address) external view returns (uint256);\\n function meetsAccountLockedGoldRequirements(address) external view returns (bool);\\n function getValidatorBlsPublicKeyFromSigner(address) external view returns (bytes memory);\\n function getValidator(address account)\\n external\\n view\\n returns (bytes memory, bytes memory, address, uint256, address);\\n function getValidatorGroup(address)\\n external\\n view\\n returns (address[] memory, uint256, uint256, uint256, uint256[] memory, uint256, uint256);\\n function getGroupNumMembers(address) external view returns (uint256);\\n function getTopGroupValidators(address, uint256) external view returns (address[] memory);\\n function getGroupsNumMembers(address[] calldata accounts)\\n external\\n view\\n returns (uint256[] memory);\\n function getNumRegisteredValidators() external view returns (uint256);\\n function groupMembershipInEpoch(address, uint256, uint256) external view returns (address);\\n\\n // only registered contract\\n function updateEcdsaPublicKey(address, address, bytes calldata) external returns (bool);\\n function updatePublicKeys(address, address, bytes calldata, bytes calldata, bytes calldata)\\n external\\n returns (bool);\\n function getValidatorLockedGoldRequirements() external view returns (uint256, uint256);\\n function getGroupLockedGoldRequirements() external view returns (uint256, uint256);\\n function getRegisteredValidators() external view returns (address[] memory);\\n function getRegisteredValidatorSigners() external view returns (address[] memory);\\n function getRegisteredValidatorGroups() external view returns (address[] memory);\\n function isValidatorGroup(address) external view returns (bool);\\n function isValidator(address) external view returns (bool);\\n function getValidatorGroupSlashingMultiplier(address) external view returns (uint256);\\n function getMembershipInLastEpoch(address) external view returns (address);\\n function getMembershipInLastEpochFromSigner(address) external view returns (address);\\n\\n // only VM\\n function updateValidatorScoreFromSigner(address, uint256) external;\\n function distributeEpochPaymentsFromSigner(address, uint256) external returns (uint256);\\n\\n // only slasher\\n function forceDeaffiliateIfValidator(address) external;\\n function halveSlashingMultiplier(address) external;\\n\\n}\\n\",\"keccak256\":\"0x524a9e48689537421f97296ffd57fa0f2887117f9af9e71dd5ed17e66ba92d2a\"},\"project:/contracts/identity/Escrow.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"openzeppelin-solidity/contracts/math/SafeMath.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/ownership/Ownable.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\\\";\\n\\nimport \\\"./interfaces/IAttestations.sol\\\";\\nimport \\\"./interfaces/IFederatedAttestations.sol\\\";\\nimport \\\"./interfaces/IEscrow.sol\\\";\\nimport \\\"../common/Initializable.sol\\\";\\nimport \\\"../common/interfaces/ICeloVersionedContract.sol\\\";\\nimport \\\"../common/UsingRegistryV2BackwardsCompatible.sol\\\";\\nimport \\\"../common/Signatures.sol\\\";\\nimport \\\"../common/libraries/ReentrancyGuard.sol\\\";\\n\\ncontract Escrow is\\n IEscrow,\\n ICeloVersionedContract,\\n ReentrancyGuard,\\n Ownable,\\n Initializable,\\n // Maintain storage alignment since Escrow was initially deployed with UsingRegistry.sol\\n UsingRegistryV2BackwardsCompatible\\n{\\n using SafeMath for uint256;\\n using SafeERC20 for ERC20;\\n\\n event DefaultTrustedIssuerAdded(address indexed trustedIssuer);\\n event DefaultTrustedIssuerRemoved(address indexed trustedIssuer);\\n\\n event Transfer(\\n address indexed from,\\n bytes32 indexed identifier,\\n address indexed token,\\n uint256 value,\\n address paymentId,\\n uint256 minAttestations\\n );\\n\\n event TrustedIssuersSet(address indexed paymentId, address[] trustedIssuers);\\n event TrustedIssuersUnset(address indexed paymentId);\\n\\n event Withdrawal(\\n bytes32 indexed identifier,\\n // Note that in previous versions of Escrow.sol, `to` referenced\\n // the original sender of the payment\\n address indexed to,\\n address indexed token,\\n uint256 value,\\n address paymentId\\n );\\n\\n event Revocation(\\n bytes32 indexed identifier,\\n address indexed by,\\n address indexed token,\\n uint256 value,\\n address paymentId\\n );\\n\\n struct EscrowedPayment {\\n bytes32 recipientIdentifier;\\n address sender;\\n address token;\\n uint256 value;\\n uint256 sentIndex; // Location of this payment in sender's list of sent payments.\\n uint256 receivedIndex; // Location of this payment in receivers's list of received payments.\\n uint256 timestamp;\\n uint256 expirySeconds;\\n uint256 minAttestations;\\n }\\n\\n // Maps unique payment IDs to escrowed payments.\\n // These payment IDs are the temporary wallet addresses created with the escrowed payments.\\n mapping(address => EscrowedPayment) public escrowedPayments;\\n\\n // Maps receivers' identifiers to a list of received escrowed payment IDs.\\n mapping(bytes32 => address[]) public receivedPaymentIds;\\n\\n // Maps senders' addresses to a list of sent escrowed payment IDs.\\n mapping(address => address[]) public sentPaymentIds;\\n\\n // Maps payment ID to a list of issuers whose attestations will be accepted.\\n mapping(address => address[]) public trustedIssuersPerPayment;\\n\\n // Governable list of trustedIssuers to set for payments by default.\\n address[] public defaultTrustedIssuers;\\n\\n // Based on benchmarking of FederatedAttestations lookup gas consumption\\n // in the worst case (with a significant amount of buffer).\\n uint256 public constant MAX_TRUSTED_ISSUERS_PER_PAYMENT = 100;\\n\\n /**\\n * @notice Sets initialized == true on implementation contracts\\n * @param test Set to true to skip implementation initialization\\n */\\n constructor(bool test) public Initializable(test) {}\\n\\n /**\\n * @notice Returns the storage, major, minor, and patch version of the contract.\\n * @return The storage, major, minor, and patch version of the contract.\\n */\\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) {\\n return (1, 2, 0, 0);\\n }\\n\\n /**\\n * @notice Used in place of the constructor to allow the contract to be upgradable via proxy.\\n */\\n function initialize() external initializer {\\n _transferOwnership(msg.sender);\\n }\\n\\n /**\\n * @notice Add an address to the defaultTrustedIssuers list.\\n * @param trustedIssuer Address of the trustedIssuer to add.\\n * @dev Throws if trustedIssuer is null or already in defaultTrustedIssuers.\\n * @dev Throws if defaultTrustedIssuers is already at max allowed length.\\n */\\n function addDefaultTrustedIssuer(address trustedIssuer) external onlyOwner {\\n require(address(0) != trustedIssuer, \\\"trustedIssuer can't be null\\\");\\n require(\\n defaultTrustedIssuers.length.add(1) <= MAX_TRUSTED_ISSUERS_PER_PAYMENT,\\n \\\"defaultTrustedIssuers.length can't exceed allowed number of trustedIssuers\\\"\\n );\\n\\n // Ensure list of trusted issuers is unique\\n for (uint256 i = 0; i < defaultTrustedIssuers.length; i = i.add(1)) {\\n require(\\n defaultTrustedIssuers[i] != trustedIssuer,\\n \\\"trustedIssuer already in defaultTrustedIssuers\\\"\\n );\\n }\\n defaultTrustedIssuers.push(trustedIssuer);\\n emit DefaultTrustedIssuerAdded(trustedIssuer);\\n }\\n\\n /**\\n * @notice Remove an address from the defaultTrustedIssuers list.\\n * @param trustedIssuer Address of the trustedIssuer to remove.\\n * @param index Index of trustedIssuer in defaultTrustedIssuers.\\n * @dev Throws if trustedIssuer is not in defaultTrustedIssuers at index.\\n */\\n function removeDefaultTrustedIssuer(address trustedIssuer, uint256 index) external onlyOwner {\\n uint256 numDefaultTrustedIssuers = defaultTrustedIssuers.length;\\n require(index < numDefaultTrustedIssuers, \\\"index is invalid\\\");\\n require(\\n defaultTrustedIssuers[index] == trustedIssuer,\\n \\\"trustedIssuer does not match address found at defaultTrustedIssuers[index]\\\"\\n );\\n if (index != numDefaultTrustedIssuers - 1) {\\n // Swap last index with index-to-remove\\n defaultTrustedIssuers[index] = defaultTrustedIssuers[numDefaultTrustedIssuers - 1];\\n }\\n defaultTrustedIssuers.pop();\\n emit DefaultTrustedIssuerRemoved(trustedIssuer);\\n }\\n\\n /**\\n * @notice Transfer tokens to a specific user. Supports both identity with privacy (an empty\\n * identifier and 0 minAttestations) and without (with identifier and minAttestations).\\n * Sets trustedIssuers to the issuers listed in `defaultTrustedIssuers`.\\n * (To override this and set custom trusted issuers, use `transferWithTrustedIssuers`.)\\n * @param identifier The hashed identifier of a user to transfer to.\\n * @param token The token to be transferred.\\n * @param value The amount to be transferred.\\n * @param expirySeconds The number of seconds before the sender can revoke the payment.\\n * @param paymentId The address of the temporary wallet associated with this payment. Users must\\n * prove ownership of the corresponding private key to withdraw from escrow.\\n * @param minAttestations The min number of attestations required to withdraw the payment.\\n * @return True if transfer succeeded.\\n * @dev Throws if 'token' or 'value' is 0.\\n * @dev Throws if identifier is null and minAttestations > 0.\\n * @dev If minAttestations is 0, trustedIssuers will be set to empty list.\\n * @dev msg.sender needs to have already approved this contract to transfer\\n */\\n // solhint-disable-next-line no-simple-event-func-name\\n function transfer(\\n bytes32 identifier,\\n address token,\\n uint256 value,\\n uint256 expirySeconds,\\n address paymentId,\\n uint256 minAttestations\\n ) external nonReentrant returns (bool) {\\n address[] memory trustedIssuers;\\n // If minAttestations == 0, trustedIssuers should remain empty\\n if (minAttestations > 0) {\\n trustedIssuers = defaultTrustedIssuers;\\n }\\n return\\n _transfer(\\n identifier,\\n token,\\n value,\\n expirySeconds,\\n paymentId,\\n minAttestations,\\n trustedIssuers\\n );\\n }\\n\\n /**\\n * @notice Transfer tokens to a specific user. Supports both identity with privacy (an empty\\n * identifier and 0 minAttestations) and without (with identifier\\n * and attestations completed by trustedIssuers).\\n * @param identifier The hashed identifier of a user to transfer to.\\n * @param token The token to be transferred.\\n * @param value The amount to be transferred.\\n * @param expirySeconds The number of seconds before the sender can revoke the payment.\\n * @param paymentId The address of the temporary wallet associated with this payment. Users must\\n * prove ownership of the corresponding private key to withdraw from escrow.\\n * @param minAttestations The min number of attestations required to withdraw the payment.\\n * @param trustedIssuers Array of issuers whose attestations in FederatedAttestations.sol\\n * will be accepted to prove ownership over an identifier.\\n * @return True if transfer succeeded.\\n * @dev Throws if 'token' or 'value' is 0.\\n * @dev Throws if identifier is null and minAttestations > 0.\\n * @dev Throws if minAttestations == 0 but trustedIssuers are provided.\\n * @dev msg.sender needs to have already approved this contract to transfer.\\n */\\n function transferWithTrustedIssuers(\\n bytes32 identifier,\\n address token,\\n uint256 value,\\n uint256 expirySeconds,\\n address paymentId,\\n uint256 minAttestations,\\n address[] calldata trustedIssuers\\n ) external nonReentrant returns (bool) {\\n return\\n _transfer(\\n identifier,\\n token,\\n value,\\n expirySeconds,\\n paymentId,\\n minAttestations,\\n trustedIssuers\\n );\\n }\\n\\n /**\\n * @notice Withdraws tokens for a verified user.\\n * @param paymentId The ID for the EscrowedPayment struct that contains all relevant information.\\n * @param v The recovery id of the incoming ECDSA signature.\\n * @param r Output value r of the ECDSA signature.\\n * @param s Output value s of the ECDSA signature.\\n * @return True if withdraw succeeded.\\n * @dev Throws if 'token' or 'value' is 0.\\n * @dev Throws if msg.sender does not prove ownership of the withdraw key.\\n */\\n function withdraw(address paymentId, uint8 v, bytes32 r, bytes32 s)\\n external\\n nonReentrant\\n returns (bool)\\n {\\n address signer = Signatures.getSignerOfAddress(msg.sender, v, r, s);\\n require(signer == paymentId, \\\"Failed to prove ownership of the withdraw key\\\");\\n EscrowedPayment memory payment = escrowedPayments[paymentId];\\n require(payment.token != address(0) && payment.value > 0, \\\"Invalid withdraw value.\\\");\\n\\n // Due to an old bug, there may exist payments with no identifier and minAttestations > 0\\n // So ensure that these fail the attestations check, as they previously would have\\n if (payment.minAttestations > 0) {\\n bool passedCheck = false;\\n address[] memory trustedIssuers = trustedIssuersPerPayment[paymentId];\\n address attestationsAddress = registryContract.getAddressForOrDie(ATTESTATIONS_REGISTRY_ID);\\n\\n if (trustedIssuers.length > 0) {\\n passedCheck =\\n hasCompletedV1AttestationsAsTrustedIssuer(\\n attestationsAddress,\\n payment.recipientIdentifier,\\n msg.sender,\\n payment.minAttestations,\\n trustedIssuers\\n ) ||\\n hasCompletedV2Attestations(payment.recipientIdentifier, msg.sender, trustedIssuers);\\n } else {\\n // This is for backwards compatibility, not default/fallback behavior\\n passedCheck = hasCompletedV1Attestations(\\n attestationsAddress,\\n payment.recipientIdentifier,\\n msg.sender,\\n payment.minAttestations\\n );\\n }\\n require(\\n passedCheck,\\n \\\"This account does not have the required attestations to withdraw this payment.\\\"\\n );\\n }\\n\\n deletePayment(paymentId);\\n\\n ERC20(payment.token).safeTransfer(msg.sender, payment.value);\\n\\n emit Withdrawal(\\n payment.recipientIdentifier,\\n msg.sender,\\n payment.token,\\n payment.value,\\n paymentId\\n );\\n\\n return true;\\n }\\n\\n /**\\n * @notice Revokes tokens for a sender who is redeeming a payment after it has expired.\\n * @param paymentId The ID for the EscrowedPayment struct that contains all relevant information.\\n * @dev Throws if 'token' or 'value' is 0.\\n * @dev Throws if msg.sender is not the sender of payment.\\n * @dev Throws if redeem time hasn't been reached yet.\\n */\\n function revoke(address paymentId) external nonReentrant returns (bool) {\\n EscrowedPayment memory payment = escrowedPayments[paymentId];\\n require(payment.sender == msg.sender, \\\"Only sender of payment can attempt to revoke payment.\\\");\\n require(\\n now >= (payment.timestamp.add(payment.expirySeconds)),\\n \\\"Transaction not redeemable for sender yet.\\\"\\n );\\n\\n deletePayment(paymentId);\\n\\n ERC20(payment.token).safeTransfer(msg.sender, payment.value);\\n\\n emit Revocation(\\n payment.recipientIdentifier,\\n payment.sender,\\n payment.token,\\n payment.value,\\n paymentId\\n );\\n\\n return true;\\n\\n }\\n\\n /**\\n * @notice Gets array of all Escrowed Payments received by identifier.\\n * @param identifier The hash of an identifier of the receiver of the escrowed payment.\\n * @return An array containing all the IDs of the Escrowed Payments that were received\\n * by the specified receiver.\\n */\\n function getReceivedPaymentIds(bytes32 identifier) external view returns (address[] memory) {\\n return receivedPaymentIds[identifier];\\n }\\n\\n /**\\n * @notice Gets array of all Escrowed Payment IDs sent by sender.\\n * @param sender The address of the sender of the escrowed payments.\\n * @return An array containing all the IDs of the Escrowed Payments that were sent by the\\n * specified sender.\\n */\\n function getSentPaymentIds(address sender) external view returns (address[] memory) {\\n return sentPaymentIds[sender];\\n }\\n\\n /**\\n * @notice Gets array of all trusted issuers set per paymentId.\\n * @param paymentId The ID of the payment to get.\\n * @return An array of addresses of trusted issuers set for an escrowed payment.\\n */\\n function getTrustedIssuersPerPayment(address paymentId) external view returns (address[] memory) {\\n return trustedIssuersPerPayment[paymentId];\\n }\\n\\n /**\\n * @notice Gets trusted issuers set as default for payments by `transfer` function.\\n * @return An array of addresses of trusted issuers.\\n */\\n function getDefaultTrustedIssuers() public view returns (address[] memory) {\\n return defaultTrustedIssuers;\\n }\\n\\n /**\\n * @notice Checks if account has completed minAttestations for identifier in Attestations.sol.\\n * @param attestationsAddress The address of Attestations.sol.\\n * @param identifier The hash of an identifier for which to look up attestations.\\n * @param account The account for which to look up attestations.\\n * @param minAttestations The minimum number of attestations to have completed.\\n * @return Whether or not attestations in Attestations.sol\\n * exceeds minAttestations for (identifier, account).\\n */\\n function hasCompletedV1Attestations(\\n address attestationsAddress,\\n bytes32 identifier,\\n address account,\\n uint256 minAttestations\\n ) internal view returns (bool) {\\n IAttestations attestations = IAttestations(attestationsAddress);\\n (uint64 completedAttestations, ) = attestations.getAttestationStats(identifier, account);\\n return (uint256(completedAttestations) >= minAttestations);\\n }\\n\\n /**\\n * @notice Helper function that checks if one of the trustedIssuers is the old Attestations.sol\\n * contract and applies the escrow V1 check against minAttestations.\\n * @param attestationsAddress The address of Attestations.sol.\\n * @param identifier The hash of an identifier for which to look up attestations.\\n * @param account The account for which to look up attestations.\\n * @param minAttestations The minimum number of attestations to have completed.\\n * @param trustedIssuers The trustedIssuer addresses to search through.\\n * @return Whether or not a trustedIssuer is Attestations.sol & attestations\\n * exceed minAttestations for (identifier, account).\\n */\\n function hasCompletedV1AttestationsAsTrustedIssuer(\\n address attestationsAddress,\\n bytes32 identifier,\\n address account,\\n uint256 minAttestations,\\n address[] memory trustedIssuers\\n ) internal view returns (bool) {\\n for (uint256 i = 0; i < trustedIssuers.length; i = i.add(1)) {\\n if (trustedIssuers[i] != attestationsAddress) {\\n continue;\\n }\\n // This can be false; one of the several trustedIssuers listed needs to prove attestations\\n return hasCompletedV1Attestations(attestationsAddress, identifier, account, minAttestations);\\n }\\n return false;\\n }\\n\\n /**\\n * @notice Checks if there are attestations for account <-> identifier from\\n * any of trustedIssuers in FederatedAttestations.sol.\\n * @param identifier The hash of an identifier for which to look up attestations.\\n * @param account The account for which to look up attestations.\\n * @param trustedIssuers Issuer addresses whose attestations to trust.\\n * @return Whether or not attestations exist in FederatedAttestations.sol\\n * for (identifier, account).\\n */\\n function hasCompletedV2Attestations(\\n bytes32 identifier,\\n address account,\\n address[] memory trustedIssuers\\n ) internal view returns (bool) {\\n // Check for an attestation from a trusted issuer\\n IFederatedAttestations federatedAttestations = getFederatedAttestations();\\n (, address[] memory accounts, , , ) = federatedAttestations.lookupAttestations(\\n identifier,\\n trustedIssuers\\n );\\n // Check if an attestation was found for recipientIdentifier -> account\\n for (uint256 i = 0; i < accounts.length; i = i.add(1)) {\\n if (accounts[i] == account) {\\n return true;\\n }\\n }\\n return false;\\n }\\n\\n /**\\n * @notice Helper function for `transferWithTrustedIssuers` and `transfer`, to\\n * enable backwards-compatible function signature for `transfer`,\\n * and since `transfer` cannot directly call `transferWithTrustedIssuers`\\n * due to reentrancy guard.\\n * @param identifier The hashed identifier of a user to transfer to.\\n * @param token The token to be transferred.\\n * @param value The amount to be transferred.\\n * @param expirySeconds The number of seconds before the sender can revoke the payment.\\n * @param paymentId The address of the temporary wallet associated with this payment. Users must\\n * prove ownership of the corresponding private key to withdraw from escrow.\\n * @param minAttestations The min number of attestations required to withdraw the payment.\\n * @param trustedIssuers Array of issuers whose attestations in FederatedAttestations.sol\\n * will be accepted to prove ownership over an identifier.\\n * @return True if transfer succeeded.\\n * @dev Throws if 'token' or 'value' is 0.\\n * @dev Throws if identifier is null and minAttestations > 0.\\n * @dev Throws if minAttestations == 0 but trustedIssuers are provided.\\n * @dev msg.sender needs to have already approved this contract to transfer.\\n */\\n function _transfer(\\n bytes32 identifier,\\n address token,\\n uint256 value,\\n uint256 expirySeconds,\\n address paymentId,\\n uint256 minAttestations,\\n address[] memory trustedIssuers\\n ) private returns (bool) {\\n require(token != address(0) && value > 0 && expirySeconds > 0, \\\"Invalid transfer inputs.\\\");\\n require(\\n !(identifier == 0 && minAttestations > 0),\\n \\\"Invalid privacy inputs: Can't require attestations if no identifier\\\"\\n );\\n // Withdraw logic with trustedIssuers in FederatedAttestations disregards\\n // minAttestations, so ensure that this is not set to 0 to prevent confusing behavior\\n // This also implies: if identifier == 0 => trustedIssuers.length == 0\\n require(\\n !(minAttestations == 0 && trustedIssuers.length > 0),\\n \\\"trustedIssuers may only be set when attestations are required\\\"\\n );\\n\\n // Ensure that withdrawal will not fail due to exceeding trustedIssuer limit\\n // in FederatedAttestations.lookupAttestations\\n require(\\n trustedIssuers.length <= MAX_TRUSTED_ISSUERS_PER_PAYMENT,\\n \\\"Too many trustedIssuers provided\\\"\\n );\\n\\n IAttestations attestations = getAttestations();\\n require(\\n minAttestations <= attestations.getMaxAttestations(),\\n \\\"minAttestations larger than limit\\\"\\n );\\n\\n uint256 sentIndex = sentPaymentIds[msg.sender].push(paymentId).sub(1);\\n uint256 receivedIndex = receivedPaymentIds[identifier].push(paymentId).sub(1);\\n\\n EscrowedPayment storage newPayment = escrowedPayments[paymentId];\\n require(newPayment.timestamp == 0, \\\"paymentId already used\\\");\\n newPayment.recipientIdentifier = identifier;\\n newPayment.sender = msg.sender;\\n newPayment.token = token;\\n newPayment.value = value;\\n newPayment.sentIndex = sentIndex;\\n newPayment.receivedIndex = receivedIndex;\\n newPayment.timestamp = block.timestamp;\\n newPayment.expirySeconds = expirySeconds;\\n newPayment.minAttestations = minAttestations;\\n\\n // Avoid unnecessary storage write\\n if (trustedIssuers.length > 0) {\\n trustedIssuersPerPayment[paymentId] = trustedIssuers;\\n }\\n\\n ERC20(token).safeTransferFrom(msg.sender, address(this), value);\\n emit Transfer(msg.sender, identifier, token, value, paymentId, minAttestations);\\n // Split into a second event for ABI backwards compatibility\\n emit TrustedIssuersSet(paymentId, trustedIssuers);\\n return true;\\n }\\n\\n /**\\n * @notice Deletes the payment from its receiver's and sender's lists of payments,\\n * and zeroes out all the data in the struct.\\n * @param paymentId The ID of the payment to be deleted.\\n */\\n function deletePayment(address paymentId) private {\\n EscrowedPayment storage payment = escrowedPayments[paymentId];\\n address[] storage received = receivedPaymentIds[payment.recipientIdentifier];\\n address[] storage sent = sentPaymentIds[payment.sender];\\n\\n escrowedPayments[received[received.length - 1]].receivedIndex = payment.receivedIndex;\\n received[payment.receivedIndex] = received[received.length - 1];\\n received.length = received.length.sub(1);\\n\\n escrowedPayments[sent[sent.length - 1]].sentIndex = payment.sentIndex;\\n sent[payment.sentIndex] = sent[sent.length - 1];\\n sent.length = sent.length.sub(1);\\n\\n delete escrowedPayments[paymentId];\\n delete trustedIssuersPerPayment[paymentId];\\n emit TrustedIssuersUnset(paymentId);\\n }\\n}\\n\",\"keccak256\":\"0xdad4bd7ddec99e0abef1fca83aa0eb1b66e9e6bb5b7e7caccb20e899b27706e5\"},\"project:/contracts/identity/interfaces/IAttestations.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IAttestations {\\n function request(bytes32, uint256, address) external;\\n function selectIssuers(bytes32) external;\\n function complete(bytes32, uint8, bytes32, bytes32) external;\\n function revoke(bytes32, uint256) external;\\n function withdraw(address) external;\\n function approveTransfer(bytes32, uint256, address, address, bool) external;\\n\\n // view functions\\n function getUnselectedRequest(bytes32, address) external view returns (uint32, uint32, address);\\n function getAttestationIssuers(bytes32, address) external view returns (address[] memory);\\n function getAttestationStats(bytes32, address) external view returns (uint32, uint32);\\n function batchGetAttestationStats(bytes32[] calldata)\\n external\\n view\\n returns (uint256[] memory, address[] memory, uint64[] memory, uint64[] memory);\\n function getAttestationState(bytes32, address, address)\\n external\\n view\\n returns (uint8, uint32, address);\\n function getCompletableAttestations(bytes32, address)\\n external\\n view\\n returns (uint32[] memory, address[] memory, uint256[] memory, bytes memory);\\n function getAttestationRequestFee(address) external view returns (uint256);\\n function getMaxAttestations() external view returns (uint256);\\n function validateAttestationCode(bytes32, address, uint8, bytes32, bytes32)\\n external\\n view\\n returns (address);\\n function lookupAccountsForIdentifier(bytes32) external view returns (address[] memory);\\n function requireNAttestationsRequested(bytes32, address, uint32) external view;\\n\\n // only owner\\n function setAttestationRequestFee(address, uint256) external;\\n function setAttestationExpiryBlocks(uint256) external;\\n function setSelectIssuersWaitBlocks(uint256) external;\\n function setMaxAttestations(uint256) external;\\n}\\n\",\"keccak256\":\"0x979aaac636fe6a64f97034bf0bf062b5f0efd6e6f9f3fe84e81180f82eeb7a3e\"},\"project:/contracts/identity/interfaces/IEscrow.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IEscrow {\\n function transfer(\\n bytes32 identifier,\\n address token,\\n uint256 value,\\n uint256 expirySeconds,\\n address paymentId,\\n uint256 minAttestations\\n ) external returns (bool);\\n function transferWithTrustedIssuers(\\n bytes32 identifier,\\n address token,\\n uint256 value,\\n uint256 expirySeconds,\\n address paymentId,\\n uint256 minAttestations,\\n address[] calldata trustedIssuers\\n ) external returns (bool);\\n function withdraw(address paymentID, uint8 v, bytes32 r, bytes32 s) external returns (bool);\\n function revoke(address paymentID) external returns (bool);\\n\\n // view functions\\n function getReceivedPaymentIds(bytes32 identifier) external view returns (address[] memory);\\n function getSentPaymentIds(address sender) external view returns (address[] memory);\\n function getTrustedIssuersPerPayment(address paymentId) external view returns (address[] memory);\\n function getDefaultTrustedIssuers() external view returns (address[] memory);\\n function MAX_TRUSTED_ISSUERS_PER_PAYMENT() external view returns (uint256);\\n\\n // onlyOwner functions\\n function addDefaultTrustedIssuer(address trustedIssuer) external;\\n function removeDefaultTrustedIssuer(address trustedIssuer, uint256 index) external;\\n}\\n\",\"keccak256\":\"0xdf3bb49c05fca0dca025939bcacf045b8b788dcbb7c3f1fdc798575f59cdb0a3\"},\"project:/contracts/identity/interfaces/IFederatedAttestations.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IFederatedAttestations {\\n function registerAttestationAsIssuer(bytes32 identifier, address account, uint64 issuedOn)\\n external;\\n function registerAttestation(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n function revokeAttestation(bytes32 identifier, address issuer, address account) external;\\n function batchRevokeAttestations(\\n address issuer,\\n bytes32[] calldata identifiers,\\n address[] calldata accounts\\n ) external;\\n\\n // view functions\\n function lookupAttestations(bytes32 identifier, address[] calldata trustedIssuers)\\n external\\n view\\n returns (\\n uint256[] memory,\\n address[] memory,\\n address[] memory,\\n uint64[] memory,\\n uint64[] memory\\n );\\n function lookupIdentifiers(address account, address[] calldata trustedIssuers)\\n external\\n view\\n returns (uint256[] memory, bytes32[] memory);\\n function validateAttestationSig(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external view;\\n function getUniqueAttestationHash(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn\\n ) external pure returns (bytes32);\\n}\\n\",\"keccak256\":\"0xe6b1bfcc36ca38554c29c03f96e70f937a824462fb620e418f774c3d1340d9a8\"},\"project:/contracts/identity/interfaces/IRandom.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IRandom {\\n function revealAndCommit(bytes32, bytes32, address) external;\\n function randomnessBlockRetentionWindow() external view returns (uint256);\\n function random() external view returns (bytes32);\\n function getBlockRandomness(uint256) external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd65fd529d133cbde94628b39b0d2f0f4b6d0af2e8f97c0e6b4b2cd476479ed1d\"},\"project:/contracts/stability/interfaces/IExchange.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IExchange {\\n function buy(uint256, uint256, bool) external returns (uint256);\\n function sell(uint256, uint256, bool) external returns (uint256);\\n function exchange(uint256, uint256, bool) external returns (uint256);\\n function setUpdateFrequency(uint256) external;\\n function getBuyTokenAmount(uint256, bool) external view returns (uint256);\\n function getSellTokenAmount(uint256, bool) external view returns (uint256);\\n function getBuyAndSellBuckets(bool) external view returns (uint256, uint256);\\n}\\n\",\"keccak256\":\"0xf2934d473f1b42566dbd90b4777725c966524bab78ce734b51f2510c6ef83ebb\"},\"project:/contracts/stability/interfaces/IReserve.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IReserve {\\n function setTobinTaxStalenessThreshold(uint256) external;\\n function addToken(address) external returns (bool);\\n function removeToken(address, uint256) external returns (bool);\\n function transferGold(address payable, uint256) external returns (bool);\\n function transferExchangeGold(address payable, uint256) external returns (bool);\\n function getReserveGoldBalance() external view returns (uint256);\\n function getUnfrozenReserveGoldBalance() external view returns (uint256);\\n function getOrComputeTobinTax() external returns (uint256, uint256);\\n function getTokens() external view returns (address[] memory);\\n function getReserveRatio() external view returns (uint256);\\n function addExchangeSpender(address) external;\\n function removeExchangeSpender(address, uint256) external;\\n function addSpender(address) external;\\n function removeSpender(address) external;\\n}\\n\",\"keccak256\":\"0x8da4d702b47a7e60981ca416f2d0f24a3c1dea9ab44f04b695c0fde02c84a38e\"},\"project:/contracts/stability/interfaces/ISortedOracles.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface ISortedOracles {\\n function addOracle(address, address) external;\\n function removeOracle(address, address, uint256) external;\\n function report(address, uint256, address, address) external;\\n function removeExpiredReports(address, uint256) external;\\n function isOldestReportExpired(address token) external view returns (bool, address);\\n function numRates(address) external view returns (uint256);\\n function medianRate(address) external view returns (uint256, uint256);\\n function numTimestamps(address) external view returns (uint256);\\n function medianTimestamp(address) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x8f80e430800fff2f04f3981c4b73a2a374b2c2150543a2de51fcf7ba4fb08789\"},\"project:/contracts/stability/interfaces/IStableToken.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\n/**\\n * @title This interface describes the functions specific to Celo Stable Tokens, and in the\\n * absence of interface inheritance is intended as a companion to IERC20.sol and ICeloToken.sol.\\n */\\ninterface IStableToken {\\n function mint(address, uint256) external returns (bool);\\n function burn(uint256) external returns (bool);\\n function setInflationParameters(uint256, uint256) external;\\n function valueToUnits(uint256) external view returns (uint256);\\n function unitsToValue(uint256) external view returns (uint256);\\n function getInflationParameters() external view returns (uint256, uint256, uint256, uint256);\\n\\n // NOTE: duplicated with IERC20.sol, remove once interface inheritance is supported.\\n function balanceOf(address) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x091e577acecdf050fe4c41133b11fe330d07050c5fe78b65bfce32ccc29e51c6\"}},\"version\":1}",
+ "bytecode": "0x60806040523480156200001157600080fd5b506040516200471738038062004717833981810160405260208110156200003757600080fd5b81019080805190602001909291905050508060016000819055506000620000636200012b60201b60201c565b905080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080620001235760018060146101000a81548160ff0219169083151502179055505b505062000133565b600033905090565b6145d480620001436000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c8063696e3fb1116100de5780638129fc1c116100975780638f80c33e116100715780638f80c33e146109b1578063e1d9a08014610a29578063f2fde38b14610ab7578063f782878914610afb57610173565b80638129fc1c1461093b5780638da5cb5b146109455780638f32d59b1461098f57610173565b8063696e3fb114610735578063702cb75d14610779578063715018a61461081d57806371f7f6d41461082757806374a8f103146108955780637b103999146108f157610173565b806354255be01161013057806354255be0146104525780635b57b65b146104855780635cb516e9146105085780635fb2076f1461059657806360a2a152146105b4578063680d782c1461064d57610173565b8063158ef93e1461017857806318d465321461019a5780631ea153dd1461023357806328c1f99b1461032c5780632c21c7f6146103765780633e68d5d7146103d5575b600080fd5b610180610b49565b604051808215151515815260200191505060405180910390f35b6101dc600480360360208110156101b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b5c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561021f578082015181840152602081019050610204565b505050509050019250505060405180910390f35b610312600480360360e081101561024957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156102ce57600080fd5b8201836020820111156102e057600080fd5b8035906020019184602083028401116401000000008311171561030257600080fd5b9091929391929390505050610c29565b604051808215151515815260200191505060405180910390f35b610334610d17565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61037e610d1d565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156103c15780820151818401526020810190506103a6565b505050509050019250505060405180910390f35b610438600480360360808110156103eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050610dab565b604051808215151515815260200191505060405180910390f35b61045a6114e7565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b6104b16004803603602081101561049b57600080fd5b810190808035906020019092919050505061150e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156104f45780820151818401526020810190506104d9565b505050509050019250505060405180910390f35b6105546004803603604081101561051e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115af565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61059e6115fa565b6040518082815260200191505060405180910390f35b6105f6600480360360208110156105ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115ff565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561063957808201518184015260208101905061061e565b505050509050019250505060405180910390f35b61068f6004803603602081101561066357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116cc565b604051808a81526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001878152602001868152602001858152602001848152602001838152602001828152602001995050505050505050505060405180910390f35b6107776004803603602081101561074b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061175a565b005b610803600480360360c081101561078f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a80565b604051808215151515815260200191505060405180910390f35b610825611bc1565b005b6108536004803603602081101561083d57600080fd5b8101908080359060200190929190505050611cfc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108d7600480360360208110156108ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d38565b604051808215151515815260200191505060405180910390f35b6108f96120fa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610943612120565b005b61094d6121c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109976121f2565b604051808215151515815260200191505060405180910390f35b6109e7600480360360408110156109c757600080fd5b810190808035906020019092919080359060200190929190505050612251565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a7560048036036040811015610a3f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061229c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610af960048036036020811015610acd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122e7565b005b610b4760048036036040811015610b1157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061236d565b005b600160149054906101000a900460ff1681565b6060600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610c1d57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610bd3575b50505050509050919050565b600060016000808282540192505081905550600080549050610c918a8a8a8a8a8a8a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050612644565b91506000548114610d0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b5098975050505050505050565b61ce1081565b60606007805480602002602001604051908101604052809291908181526020018280548015610da157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d57575b5050505050905090565b600060016000808282540192505081905550600080549050600073__Signatures____________________________6396ef41a1338888886040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460ff1660ff16815260200183815260200182815260200194505050505060206040518083038186803b158015610e5e57600080fd5b505af4158015610e72573d6000803e3d6000fd5b505050506040513d6020811015610e8857600080fd5b810190808051906020019092919050505090508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180614468602d913960400191505060405180910390fd5b610f27614158565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180610120016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815250509050600073ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16141580156110ab575060008160600151115b61111d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c69642077697468647261772076616c75652e00000000000000000081525060200191505060405180910390fd5b6000816101000151111561137f5760008090506060600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156111f157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116111a7575b50505050509050600061ce1073ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f4174746573746174696f6e730000000000000000000000000000000000000000815250600c019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561129357600080fd5b505afa1580156112a7573d6000803e3d6000fd5b505050506040513d60208110156112bd57600080fd5b8101908080519060200190929190505050905060008251111561130d576112f08185600001513387610100015186612dc4565b80611306575061130584600001513384612e5e565b5b9250611325565b611322818560000151338761010001516132ba565b92505b8261137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604e81526020018061451d604e913960600191505060405180910390fd5b5050505b611388886133ae565b6113bb338260600151836040015173ffffffffffffffffffffffffffffffffffffffff166138559092919063ffffffff16565b806040015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1682600001517fab4f92d461fdbd1af5db2375223d65edb43bcb99129b19ab4954004883e5202584606001518c604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a460019350505060005481146114de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b50949350505050565b60008060008060016002600080839350829250819150809050935093509350935090919293565b6060600460008381526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156115a357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611559575b50505050509050919050565b600660205281600052604060002081815481106115c857fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606481565b6060600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156116c057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611676575b50505050509050919050565b60036020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154908060040154908060050154908060060154908060070154908060080154905089565b6117626121f2565b6117d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff161415611877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f747275737465644973737565722063616e2774206265206e756c6c000000000081525060200191505060405180910390fd5b6064611892600160078054905061392690919063ffffffff16565b11156118e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604a8152602001806143ad604a913960600191505060405180910390fd5b60008090505b6007805490508110156119d3578173ffffffffffffffffffffffffffffffffffffffff166007828154811061192057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156119b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061443a602e913960400191505060405180910390fd5b6119cc60018261392690919063ffffffff16565b90506118ef565b5060078190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508073ffffffffffffffffffffffffffffffffffffffff167fad14c01336ff6a84f45f0edc75306d67694dbe035d43d40805d363bf42a1fcf960405160405180910390a250565b60006001600080828254019250508190555060008054905060606000841115611b2d576007805480602002602001604051908101604052809291908181526020018280548015611b2557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611adb575b505050505090505b611b3c89898989898987612644565b9250506000548114611bb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b509695505050505050565b611bc96121f2565b611c3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60078181548110611d0957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060016000808282540192505081905550600080549050611d58614158565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180610120016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815260200160088201548152505090503373ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff1614611f1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061456b6035913960400191505060405180910390fd5b611f3a8160e001518260c0015161392690919063ffffffff16565b421015611f92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614383602a913960400191505060405180910390fd5b611f9b846133ae565b611fce338260600151836040015173ffffffffffffffffffffffffffffffffffffffff166138559092919063ffffffff16565b806040015173ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff1682600001517f6c464fad8039e6f09ec3a57a29f132cf2573d166833256960e2407eefff8f592846060015188604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a4600192505060005481146120f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b50919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160149054906101000a900460ff16156121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b60018060146101000a81548160ff0219169083151502179055506121c6336139ae565b565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612235613af4565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6004602052816000526040600020818154811061226a57fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560205281600052604060002081815481106122b557fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6122ef6121f2565b612361576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61236a816139ae565b50565b6123756121f2565b6123e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60006007805490509050808210612466576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f696e64657820697320696e76616c69640000000000000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166007838154811061248a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612521576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604a815260200180614339604a913960600191505060405180910390fd5b6001810382146125bc576007600182038154811061253b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166007838154811061257357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60078054806125c757fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558273ffffffffffffffffffffffffffffffffffffffff167f73b0b5acdae4b4df2c8d85a2b1c23acc9e729494c0a1dab7f81e3d73f0c84c0860405160405180910390a2505050565b60008073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580156126825750600086115b801561268e5750600085115b612700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964207472616e7366657220696e707574732e000000000000000081525060200191505060405180910390fd5b6000801b881480156127125750600083115b15612768576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806143f76043913960600191505060405180910390fd5b600083148015612779575060008251115b156127cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806144b6603d913960400191505060405180910390fd5b606482511115612847576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f546f6f206d616e792074727573746564497373756572732070726f766964656481525060200191505060405180910390fd5b6000612851613afc565b90508073ffffffffffffffffffffffffffffffffffffffff16637796a6846040518163ffffffff1660e01b815260040160206040518083038186803b15801561289957600080fd5b505afa1580156128ad573d6000803e3d6000fd5b505050506040513d60208110156128c357600080fd5b810190808051906020019092919050505084111561292c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806144956021913960400191505060405180910390fd5b60006129e36001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208890806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613bd790919063ffffffff16565b90506000612a706001600460008e81526020019081526020016000208990806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613bd790919063ffffffff16565b90506000600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816006015414612b2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f7061796d656e74496420616c726561647920757365640000000000000000000081525060200191505060405180910390fd5b8b8160000181905550338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a8160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550898160030181905550828160040181905550818160050181905550428160060181905550888160070181905550868160080181905550600086511115612c535785600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209080519060200190612c519291906141d3565b505b612c8033308c8e73ffffffffffffffffffffffffffffffffffffffff16613c21909392919063ffffffff16565b8a73ffffffffffffffffffffffffffffffffffffffff168c3373ffffffffffffffffffffffffffffffffffffffff167f0fc2463e82c3b8a7868e75b68a76a144816d772687e5b09f45c02db37eedf4f68d8c8c604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a48773ffffffffffffffffffffffffffffffffffffffff167fcab1568169bf0442f60fe89e06961cd74fbb1630c0ef54cd00562ff0ded2c2c0876040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015612d9e578082015181840152602081019050612d83565b505050509050019250505060405180910390a26001945050505050979650505050505050565b600080600090505b8251811015612e4f578673ffffffffffffffffffffffffffffffffffffffff16838281518110612df857fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614612e2057612e34565b612e2c878787876132ba565b915050612e55565b612e4860018261392690919063ffffffff16565b9050612dcc565b50600090505b95945050505050565b600080612e69613d27565b905060608173ffffffffffffffffffffffffffffffffffffffff1663a862e12e87866040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015612ee3578082015181840152602081019050612ec8565b50505050905001935050505060006040518083038186803b158015612f0757600080fd5b505afa158015612f1b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060a0811015612f4557600080fd5b8101908080516040519392919084640100000000821115612f6557600080fd5b83820191506020820185811115612f7b57600080fd5b8251866020820283011164010000000082111715612f9857600080fd5b8083526020830192505050908051906020019060200280838360005b83811015612fcf578082015181840152602081019050612fb4565b5050505090500160405260200180516040519392919084640100000000821115612ff857600080fd5b8382019150602082018581111561300e57600080fd5b825186602082028301116401000000008211171561302b57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015613062578082015181840152602081019050613047565b505050509050016040526020018051604051939291908464010000000082111561308b57600080fd5b838201915060208201858111156130a157600080fd5b82518660208202830111640100000000821117156130be57600080fd5b8083526020830192505050908051906020019060200280838360005b838110156130f55780820151818401526020810190506130da565b505050509050016040526020018051604051939291908464010000000082111561311e57600080fd5b8382019150602082018581111561313457600080fd5b825186602082028301116401000000008211171561315157600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561318857808201518184015260208101905061316d565b50505050905001604052602001805160405193929190846401000000008211156131b157600080fd5b838201915060208201858111156131c757600080fd5b82518660208202830111640100000000821117156131e457600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561321b578082015181840152602081019050613200565b5050505090500160405250505050505091505060008090505b81518110156132ab578573ffffffffffffffffffffffffffffffffffffffff1682828151811061326057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141561329057600193505050506132b3565b6132a460018261392690919063ffffffff16565b9050613234565b506000925050505b9392505050565b60008085905060008173ffffffffffffffffffffffffffffffffffffffff1663596abea587876040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b15801561334657600080fd5b505afa15801561335a573d6000803e3d6000fd5b505050506040513d604081101561337057600080fd5b8101908080519060200190929190805190602001909291905050505063ffffffff169050838167ffffffffffffffff16101592505050949350505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600460008360000154815260200190815260200160002090506000600560008460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508260050154600360008460018680549050038154811061348f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055508160018380549050038154811061350e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168284600501548154811061354957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506135a960018380549050613bd790919063ffffffff16565b82816135b5919061425d565b50826004015460036000836001858054905003815481106135d257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055508060018280549050038154811061365157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168184600401548154811061368c57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506136ec60018280549050613bd790919063ffffffff16565b81816136f8919061425d565b50600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556003820160009055600482016000905560058201600090556006820160009055600782016000905560088201600090555050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061380c9190614289565b8373ffffffffffffffffffffffffffffffffffffffff167fbe92782e8f0fc2eaba574c74ef88e93ee08abda36dd1889acb0065d4af631d8860405160405180910390a250505050565b613921838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613e02565b505050565b6000808284019050838110156139a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613a34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806143136026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600061ce1073ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f4174746573746174696f6e730000000000000000000000000000000000000000815250600c019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613b9757600080fd5b505afa158015613bab573d6000803e3d6000fd5b505050506040513d6020811015613bc157600080fd5b8101908080519060200190929190505050905090565b6000613c1983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061404d565b905092915050565b613d21848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613e02565b50505050565b600061ce1073ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f4665646572617465644174746573746174696f6e7300000000000000000000008152506015019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613dc257600080fd5b505afa158015613dd6573d6000803e3d6000fd5b505050506040513d6020811015613dec57600080fd5b8101908080519060200190929190505050905090565b613e218273ffffffffffffffffffffffffffffffffffffffff1661410d565b613e93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310613ee25780518252602082019150602081019050602083039250613ebf565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613f44576040519150601f19603f3d011682016040523d82523d6000602084013e613f49565b606091505b509150915081613fc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b60008151111561404757808060200190516020811015613fe057600080fd5b8101908080519060200190929190505050614046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806144f3602a913960400191505060405180910390fd5b5b50505050565b60008383111582906140fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156140bf5780820151818401526020810190506140a4565b50505050905090810190601f1680156140ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561414f57506000801b8214155b92505050919050565b60405180610120016040528060008019168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b82805482825590600052602060002090810192821561424c579160200282015b8281111561424b5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906141f3565b5b50905061425991906142aa565b5090565b8154818355818111156142845781836000526020600020918201910161428391906142ed565b5b505050565b50805460008255906000526020600020908101906142a791906142ed565b50565b6142ea91905b808211156142e657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016142b0565b5090565b90565b61430f91905b8082111561430b5760008160009055506001016142f3565b5090565b9056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573737472757374656449737375657220646f6573206e6f74206d61746368206164647265737320666f756e642061742064656661756c7454727573746564497373756572735b696e6465785d5472616e73616374696f6e206e6f742072656465656d61626c6520666f722073656e646572207965742e64656661756c7454727573746564497373756572732e6c656e6774682063616e27742065786365656420616c6c6f776564206e756d626572206f66207472757374656449737375657273496e76616c6964207072697661637920696e707574733a2043616e27742072657175697265206174746573746174696f6e73206966206e6f206964656e7469666965727472757374656449737375657220616c726561647920696e2064656661756c7454727573746564497373756572734661696c656420746f2070726f7665206f776e657273686970206f6620746865207769746864726177206b65796d696e4174746573746174696f6e73206c6172676572207468616e206c696d69747472757374656449737375657273206d6179206f6e6c7920626520736574207768656e206174746573746174696f6e73206172652072657175697265645361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656454686973206163636f756e7420646f6573206e6f74206861766520746865207265717569726564206174746573746174696f6e7320746f2077697468647261772074686973207061796d656e742e4f6e6c792073656e646572206f66207061796d656e742063616e20617474656d707420746f207265766f6b65207061796d656e742ea265627a7a723158207cb80720564280ab06552c3ec2227c291e9f94e23edbcf4ea00b499d33de100464736f6c634300050d0032",
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101735760003560e01c8063696e3fb1116100de5780638129fc1c116100975780638f80c33e116100715780638f80c33e146109b1578063e1d9a08014610a29578063f2fde38b14610ab7578063f782878914610afb57610173565b80638129fc1c1461093b5780638da5cb5b146109455780638f32d59b1461098f57610173565b8063696e3fb114610735578063702cb75d14610779578063715018a61461081d57806371f7f6d41461082757806374a8f103146108955780637b103999146108f157610173565b806354255be01161013057806354255be0146104525780635b57b65b146104855780635cb516e9146105085780635fb2076f1461059657806360a2a152146105b4578063680d782c1461064d57610173565b8063158ef93e1461017857806318d465321461019a5780631ea153dd1461023357806328c1f99b1461032c5780632c21c7f6146103765780633e68d5d7146103d5575b600080fd5b610180610b49565b604051808215151515815260200191505060405180910390f35b6101dc600480360360208110156101b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b5c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561021f578082015181840152602081019050610204565b505050509050019250505060405180910390f35b610312600480360360e081101561024957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156102ce57600080fd5b8201836020820111156102e057600080fd5b8035906020019184602083028401116401000000008311171561030257600080fd5b9091929391929390505050610c29565b604051808215151515815260200191505060405180910390f35b610334610d17565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61037e610d1d565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156103c15780820151818401526020810190506103a6565b505050509050019250505060405180910390f35b610438600480360360808110156103eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050610dab565b604051808215151515815260200191505060405180910390f35b61045a6114e7565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b6104b16004803603602081101561049b57600080fd5b810190808035906020019092919050505061150e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156104f45780820151818401526020810190506104d9565b505050509050019250505060405180910390f35b6105546004803603604081101561051e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115af565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61059e6115fa565b6040518082815260200191505060405180910390f35b6105f6600480360360208110156105ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115ff565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561063957808201518184015260208101905061061e565b505050509050019250505060405180910390f35b61068f6004803603602081101561066357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116cc565b604051808a81526020018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001878152602001868152602001858152602001848152602001838152602001828152602001995050505050505050505060405180910390f35b6107776004803603602081101561074b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061175a565b005b610803600480360360c081101561078f57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a80565b604051808215151515815260200191505060405180910390f35b610825611bc1565b005b6108536004803603602081101561083d57600080fd5b8101908080359060200190929190505050611cfc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108d7600480360360208110156108ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d38565b604051808215151515815260200191505060405180910390f35b6108f96120fa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610943612120565b005b61094d6121c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109976121f2565b604051808215151515815260200191505060405180910390f35b6109e7600480360360408110156109c757600080fd5b810190808035906020019092919080359060200190929190505050612251565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a7560048036036040811015610a3f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061229c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610af960048036036020811015610acd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122e7565b005b610b4760048036036040811015610b1157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061236d565b005b600160149054906101000a900460ff1681565b6060600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610c1d57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610bd3575b50505050509050919050565b600060016000808282540192505081905550600080549050610c918a8a8a8a8a8a8a8a80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050612644565b91506000548114610d0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b5098975050505050505050565b61ce1081565b60606007805480602002602001604051908101604052809291908181526020018280548015610da157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d57575b5050505050905090565b600060016000808282540192505081905550600080549050600073__Signatures____________________________6396ef41a1338888886040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018460ff1660ff16815260200183815260200182815260200194505050505060206040518083038186803b158015610e5e57600080fd5b505af4158015610e72573d6000803e3d6000fd5b505050506040513d6020811015610e8857600080fd5b810190808051906020019092919050505090508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180614468602d913960400191505060405180910390fd5b610f27614158565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180610120016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815250509050600073ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff16141580156110ab575060008160600151115b61111d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c69642077697468647261772076616c75652e00000000000000000081525060200191505060405180910390fd5b6000816101000151111561137f5760008090506060600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156111f157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116111a7575b50505050509050600061ce1073ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f4174746573746174696f6e730000000000000000000000000000000000000000815250600c019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561129357600080fd5b505afa1580156112a7573d6000803e3d6000fd5b505050506040513d60208110156112bd57600080fd5b8101908080519060200190929190505050905060008251111561130d576112f08185600001513387610100015186612dc4565b80611306575061130584600001513384612e5e565b5b9250611325565b611322818560000151338761010001516132ba565b92505b8261137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604e81526020018061451d604e913960600191505060405180910390fd5b5050505b611388886133ae565b6113bb338260600151836040015173ffffffffffffffffffffffffffffffffffffffff166138559092919063ffffffff16565b806040015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1682600001517fab4f92d461fdbd1af5db2375223d65edb43bcb99129b19ab4954004883e5202584606001518c604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a460019350505060005481146114de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b50949350505050565b60008060008060016002600080839350829250819150809050935093509350935090919293565b6060600460008381526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156115a357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611559575b50505050509050919050565b600660205281600052604060002081815481106115c857fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606481565b6060600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156116c057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611676575b50505050509050919050565b60036020528060005260406000206000915090508060000154908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030154908060040154908060050154908060060154908060070154908060080154905089565b6117626121f2565b6117d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff161415611877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f747275737465644973737565722063616e2774206265206e756c6c000000000081525060200191505060405180910390fd5b6064611892600160078054905061392690919063ffffffff16565b11156118e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604a8152602001806143ad604a913960600191505060405180910390fd5b60008090505b6007805490508110156119d3578173ffffffffffffffffffffffffffffffffffffffff166007828154811061192057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156119b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061443a602e913960400191505060405180910390fd5b6119cc60018261392690919063ffffffff16565b90506118ef565b5060078190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550508073ffffffffffffffffffffffffffffffffffffffff167fad14c01336ff6a84f45f0edc75306d67694dbe035d43d40805d363bf42a1fcf960405160405180910390a250565b60006001600080828254019250508190555060008054905060606000841115611b2d576007805480602002602001604051908101604052809291908181526020018280548015611b2557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611adb575b505050505090505b611b3c89898989898987612644565b9250506000548114611bb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b509695505050505050565b611bc96121f2565b611c3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60078181548110611d0957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060016000808282540192505081905550600080549050611d58614158565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180610120016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815260200160088201548152505090503373ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff1614611f1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061456b6035913960400191505060405180910390fd5b611f3a8160e001518260c0015161392690919063ffffffff16565b421015611f92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614383602a913960400191505060405180910390fd5b611f9b846133ae565b611fce338260600151836040015173ffffffffffffffffffffffffffffffffffffffff166138559092919063ffffffff16565b806040015173ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff1682600001517f6c464fad8039e6f09ec3a57a29f132cf2573d166833256960e2407eefff8f592846060015188604051808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a4600192505060005481146120f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b50919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160149054906101000a900460ff16156121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b60018060146101000a81548160ff0219169083151502179055506121c6336139ae565b565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612235613af4565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6004602052816000526040600020818154811061226a57fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560205281600052604060002081815481106122b557fe5b906000526020600020016000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6122ef6121f2565b612361576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61236a816139ae565b50565b6123756121f2565b6123e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60006007805490509050808210612466576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f696e64657820697320696e76616c69640000000000000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff166007838154811061248a57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612521576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604a815260200180614339604a913960600191505060405180910390fd5b6001810382146125bc576007600182038154811061253b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166007838154811061257357fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60078054806125c757fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558273ffffffffffffffffffffffffffffffffffffffff167f73b0b5acdae4b4df2c8d85a2b1c23acc9e729494c0a1dab7f81e3d73f0c84c0860405160405180910390a2505050565b60008073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580156126825750600086115b801561268e5750600085115b612700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964207472616e7366657220696e707574732e000000000000000081525060200191505060405180910390fd5b6000801b881480156127125750600083115b15612768576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806143f76043913960600191505060405180910390fd5b600083148015612779575060008251115b156127cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806144b6603d913960400191505060405180910390fd5b606482511115612847576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f546f6f206d616e792074727573746564497373756572732070726f766964656481525060200191505060405180910390fd5b6000612851613afc565b90508073ffffffffffffffffffffffffffffffffffffffff16637796a6846040518163ffffffff1660e01b815260040160206040518083038186803b15801561289957600080fd5b505afa1580156128ad573d6000803e3d6000fd5b505050506040513d60208110156128c357600080fd5b810190808051906020019092919050505084111561292c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806144956021913960400191505060405180910390fd5b60006129e36001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208890806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613bd790919063ffffffff16565b90506000612a706001600460008e81526020019081526020016000208990806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613bd790919063ffffffff16565b90506000600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816006015414612b2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f7061796d656e74496420616c726561647920757365640000000000000000000081525060200191505060405180910390fd5b8b8160000181905550338160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a8160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550898160030181905550828160040181905550818160050181905550428160060181905550888160070181905550868160080181905550600086511115612c535785600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209080519060200190612c519291906141d3565b505b612c8033308c8e73ffffffffffffffffffffffffffffffffffffffff16613c21909392919063ffffffff16565b8a73ffffffffffffffffffffffffffffffffffffffff168c3373ffffffffffffffffffffffffffffffffffffffff167f0fc2463e82c3b8a7868e75b68a76a144816d772687e5b09f45c02db37eedf4f68d8c8c604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a48773ffffffffffffffffffffffffffffffffffffffff167fcab1568169bf0442f60fe89e06961cd74fbb1630c0ef54cd00562ff0ded2c2c0876040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015612d9e578082015181840152602081019050612d83565b505050509050019250505060405180910390a26001945050505050979650505050505050565b600080600090505b8251811015612e4f578673ffffffffffffffffffffffffffffffffffffffff16838281518110612df857fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614612e2057612e34565b612e2c878787876132ba565b915050612e55565b612e4860018261392690919063ffffffff16565b9050612dcc565b50600090505b95945050505050565b600080612e69613d27565b905060608173ffffffffffffffffffffffffffffffffffffffff1663a862e12e87866040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b83811015612ee3578082015181840152602081019050612ec8565b50505050905001935050505060006040518083038186803b158015612f0757600080fd5b505afa158015612f1b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060a0811015612f4557600080fd5b8101908080516040519392919084640100000000821115612f6557600080fd5b83820191506020820185811115612f7b57600080fd5b8251866020820283011164010000000082111715612f9857600080fd5b8083526020830192505050908051906020019060200280838360005b83811015612fcf578082015181840152602081019050612fb4565b5050505090500160405260200180516040519392919084640100000000821115612ff857600080fd5b8382019150602082018581111561300e57600080fd5b825186602082028301116401000000008211171561302b57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015613062578082015181840152602081019050613047565b505050509050016040526020018051604051939291908464010000000082111561308b57600080fd5b838201915060208201858111156130a157600080fd5b82518660208202830111640100000000821117156130be57600080fd5b8083526020830192505050908051906020019060200280838360005b838110156130f55780820151818401526020810190506130da565b505050509050016040526020018051604051939291908464010000000082111561311e57600080fd5b8382019150602082018581111561313457600080fd5b825186602082028301116401000000008211171561315157600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561318857808201518184015260208101905061316d565b50505050905001604052602001805160405193929190846401000000008211156131b157600080fd5b838201915060208201858111156131c757600080fd5b82518660208202830111640100000000821117156131e457600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561321b578082015181840152602081019050613200565b5050505090500160405250505050505091505060008090505b81518110156132ab578573ffffffffffffffffffffffffffffffffffffffff1682828151811061326057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16141561329057600193505050506132b3565b6132a460018261392690919063ffffffff16565b9050613234565b506000925050505b9392505050565b60008085905060008173ffffffffffffffffffffffffffffffffffffffff1663596abea587876040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b15801561334657600080fd5b505afa15801561335a573d6000803e3d6000fd5b505050506040513d604081101561337057600080fd5b8101908080519060200190929190805190602001909291905050505063ffffffff169050838167ffffffffffffffff16101592505050949350505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600460008360000154815260200190815260200160002090506000600560008460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508260050154600360008460018680549050038154811061348f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055508160018380549050038154811061350e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168284600501548154811061354957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506135a960018380549050613bd790919063ffffffff16565b82816135b5919061425d565b50826004015460036000836001858054905003815481106135d257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055508060018280549050038154811061365157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168184600401548154811061368c57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506136ec60018280549050613bd790919063ffffffff16565b81816136f8919061425d565b50600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556003820160009055600482016000905560058201600090556006820160009055600782016000905560088201600090555050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061380c9190614289565b8373ffffffffffffffffffffffffffffffffffffffff167fbe92782e8f0fc2eaba574c74ef88e93ee08abda36dd1889acb0065d4af631d8860405160405180910390a250505050565b613921838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613e02565b505050565b6000808284019050838110156139a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613a34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806143136026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600061ce1073ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f4174746573746174696f6e730000000000000000000000000000000000000000815250600c019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613b9757600080fd5b505afa158015613bab573d6000803e3d6000fd5b505050506040513d6020811015613bc157600080fd5b8101908080519060200190929190505050905090565b6000613c1983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061404d565b905092915050565b613d21848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613e02565b50505050565b600061ce1073ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f4665646572617465644174746573746174696f6e7300000000000000000000008152506015019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015613dc257600080fd5b505afa158015613dd6573d6000803e3d6000fd5b505050506040513d6020811015613dec57600080fd5b8101908080519060200190929190505050905090565b613e218273ffffffffffffffffffffffffffffffffffffffff1661410d565b613e93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310613ee25780518252602082019150602081019050602083039250613ebf565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613f44576040519150601f19603f3d011682016040523d82523d6000602084013e613f49565b606091505b509150915081613fc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b60008151111561404757808060200190516020811015613fe057600080fd5b8101908080519060200190929190505050614046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806144f3602a913960400191505060405180910390fd5b5b50505050565b60008383111582906140fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156140bf5780820151818401526020810190506140a4565b50505050905090810190601f1680156140ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561414f57506000801b8214155b92505050919050565b60405180610120016040528060008019168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b82805482825590600052602060002090810192821561424c579160200282015b8281111561424b5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906141f3565b5b50905061425991906142aa565b5090565b8154818355818111156142845781836000526020600020918201910161428391906142ed565b5b505050565b50805460008255906000526020600020908101906142a791906142ed565b50565b6142ea91905b808211156142e657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016142b0565b5090565b90565b61430f91905b8082111561430b5760008160009055506001016142f3565b5090565b9056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573737472757374656449737375657220646f6573206e6f74206d61746368206164647265737320666f756e642061742064656661756c7454727573746564497373756572735b696e6465785d5472616e73616374696f6e206e6f742072656465656d61626c6520666f722073656e646572207965742e64656661756c7454727573746564497373756572732e6c656e6774682063616e27742065786365656420616c6c6f776564206e756d626572206f66207472757374656449737375657273496e76616c6964207072697661637920696e707574733a2043616e27742072657175697265206174746573746174696f6e73206966206e6f206964656e7469666965727472757374656449737375657220616c726561647920696e2064656661756c7454727573746564497373756572734661696c656420746f2070726f7665206f776e657273686970206f6620746865207769746864726177206b65796d696e4174746573746174696f6e73206c6172676572207468616e206c696d69747472757374656449737375657273206d6179206f6e6c7920626520736574207768656e206174746573746174696f6e73206172652072657175697265645361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656454686973206163636f756e7420646f6573206e6f74206861766520746865207265717569726564206174746573746174696f6e7320746f2077697468647261772074686973207061796d656e742e4f6e6c792073656e646572206f66207061796d656e742063616e20617474656d707420746f207265766f6b65207061796d656e742ea265627a7a723158207cb80720564280ab06552c3ec2227c291e9f94e23edbcf4ea00b499d33de100464736f6c634300050d0032",
+ "sourceMap": "650:21507:95:-;;;3270:52;8:9:-1;5:2;;;30:1;27;20:12;5:2;3270:52:95;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3270:52:95;;;;;;;;;;;;;;;;3314:4;558:1:38;542:13;:17;;;;698::4;718:12;:10;;;:12;;:::i;:::-;698:32;;749:9;740:6;;:18;;;;;;;;;;;;;;;;;;806:9;773:43;;802:1;773:43;;;;;;;;;;;;664:159;135:17:19;130:57;;176:4;162:11;;:18;;;;;;;;;;;;;;;;;;130:57;81:110;3270:52:95;650:21507;;788:96:0;833:15;867:10;860:17;;788:96;:::o;650:21507:95:-;;;;;;;",
+ "deployedSourceMap": "650:21507:95:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;650:21507:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53:23:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13387:124:95;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13387:124:95;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13387:124:95;;;;;;;;;;;;;;;;;8823:439;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;8823:439:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;8823:439:95;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8823:439:95;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8823:439:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;995:71:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14028:114:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14028:114:95;;;;;;;;;;;;;;;;;9752:1936;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9752:1936:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3496:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12982:140;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12982:140:95;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;12982:140:95;;;;;;;;;;;;;;;;;2742:61;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2742:61:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3059;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13724:150;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13724:150:95;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13724:150:95;;;;;;;;;;;;;;;;;2337:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2337:59:95;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4106:693;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4106:693:95;;;;;;;;;;;;;;;;;;;:::i;:::-;;7028:569;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7028:569:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1684:137:4;;;:::i;:::-;;2879:38:95;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2879:38:95;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12051:636;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12051:636:95;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;328:25:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3725:84:95;;;:::i;:::-;;899:77:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1250:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2478:55:95;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2478:55:95;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2607:51;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2607:51:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1970:107:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1970:107:4;;;;;;;;;;;;;;;;;;;:::i;:::-;;5092:667:95;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5092:667:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;53:23:19;;;;;;;;;;;;;:::o;13387:124:95:-;13453:16;13484:14;:22;13499:6;13484:22;;;;;;;;;;;;;;;13477:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13387:124;;;:::o;8823:439::-;9074:4;970:1:38;953:13;;:18;;;;;;;;;;;977:20;1000:13;;977:36;;9099:158:95;9118:10;9138:5;9153;9168:13;9191:9;9210:15;9235:14;;9099:158;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9099:158:95;;;;;;:9;:158::i;:::-;9086:171;;1050:13:38;;1034:12;:29;1026:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8823:439:95;;;;;;;;;;;:::o;995:71:27:-;949:42;995:71;:::o;14028:114:95:-;14085:16;14116:21;14109:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14028:114;:::o;9752:1936::-;9863:4;970:1:38;953:13;;:18;;;;;;;;;;;977:20;1000:13;;977:36;;9877:14:95;9894:10;:29;9924:10;9936:1;9939;9942;9894:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9894:50:95;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9894:50:95;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9894:50:95;;;;;;;;;;;;;;;;9877:67;;9968:9;9958:19;;:6;:19;;;9950:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10033:30;;:::i;:::-;10066:16;:27;10083:9;10066:27;;;;;;;;;;;;;;;10033:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10132:1;10107:27;;:7;:13;;;:27;;;;:48;;;;;10154:1;10138:7;:13;;;:17;10107:48;10099:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10401:1;10375:7;:23;;;:27;10371:1057;;;10412:16;10431:5;10412:24;;10444:31;10478:24;:35;10503:9;10478:35;;;;;;;;;;;;;;;10444:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10521:27;949:42:27;10551:35:95;;;1226:32:27;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1226:32:27;;;1216:43;;;;;;10551:61:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10551:61:95;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10551:61:95;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10551:61:95;;;;;;;;;;;;;;;;10521:91;;10649:1;10625:14;:21;:25;10621:667;;;10686:216;10741:19;10774:7;:27;;;10815:10;10839:7;:23;;;10876:14;10686:41;:216::i;:::-;:313;;;;10916:83;10943:7;:27;;;10972:10;10984:14;10916:26;:83::i;:::-;10686:313;10662:337;;10621:667;;;11116:163;11154:19;11185:7;:27;;;11224:10;11246:7;:23;;;11116:26;:163::i;:::-;11102:177;;10621:667;11312:11;11295:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10371:1057;;;;11434:24;11448:9;11434:13;:24::i;:::-;11465:60;11499:10;11511:7;:13;;;11471:7;:13;;;11465:33;;;;:60;;;;;:::i;:::-;11608:7;:13;;;11537:128;;11590:10;11537:128;;11555:7;:27;;;11537:128;11629:7;:13;;;11650:9;11537:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;11679:4;11672:11;;;;1050:13:38;;1034:12;:29;1026:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9752:1936:95;;;;;;;:::o;3496:117::-;3547:7;3556;3565;3574;3597:1;3600;3603;3606;3589:19;;;;;;;;;;;;;;;;;;;;3496:117;;;;:::o;12982:140::-;13056:16;13087:18;:30;13106:10;13087:30;;;;;;;;;;;13080:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12982:140;;;:::o;2742:61::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3059:::-;3117:3;3059:61;:::o;13724:150::-;13803:16;13834:24;:35;13859:9;13834:35;;;;;;;;;;;;;;;13827:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13724:150;;;:::o;2337:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4106:693::-;1103:9:4;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4209:13:95;4195:27;;4203:1;4195:27;;;;4187:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3117:3;4275:35;4308:1;4275:21;:28;;;;:32;;:35;;;;:::i;:::-;:70;;4260:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4495:9;4507:1;4495:13;;4490:207;4514:21;:28;;;;4510:1;:32;4490:207;;;4611:13;4583:41;;:21;4605:1;4583:24;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;;4566:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4548:8;4554:1;4548;:5;;:8;;;;:::i;:::-;4544:12;;4490:207;;;;4702:21;4729:13;4702:41;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;4702:41:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4780:13;4754:40;;;;;;;;;;;;4106:693;:::o;7028:569::-;7222:4;970:1:38;953:13;;:18;;;;;;;;;;;977:20;1000:13;;977:36;;7234:31:95;7360:1;7342:15;:19;7338:78;;;7388:21;7371:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7338:78;7434:158;7453:10;7473:5;7488;7503:13;7526:9;7545:15;7570:14;7434:9;:158::i;:::-;7421:171;;;1050:13:38;;1034:12;:29;1026:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7028:569:95;;;;;;;;;:::o;1684:137:4:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1745:40;;1766:6;;;;;;;;;;;1745:40;;;;;;;;;;;;1812:1;1795:6;;:19;;;;;;;;;;;;;;;;;;1684:137::o;2879:38:95:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12051:636::-;12117:4;970:1:38;953:13;;:18;;;;;;;;;;;977:20;1000:13;;977:36;;12129:30:95;;:::i;:::-;12162:16;:27;12179:9;12162:27;;;;;;;;;;;;;;;12129:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12221:10;12203:28;;:7;:14;;;:28;;;12195:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12318:44;12340:7;:21;;;12318:7;:17;;;:21;;:44;;;;:::i;:::-;12310:3;:53;;12295:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12428:24;12442:9;12428:13;:24::i;:::-;12459:60;12493:10;12505:7;:13;;;12465:7;:13;;;12459:33;;;;:60;;;;;:::i;:::-;12606:7;:13;;;12531:132;;12584:7;:14;;;12531:132;;12549:7;:27;;;12531:132;12627:7;:13;;;12648:9;12531:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;12677:4;12670:11;;;1050:13:38;;1034:12;:29;1026:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12051:636:95;;;;:::o;328:25:28:-;;;;;;;;;;;;;:::o;3725:84:95:-;233:11:19;;;;;;;;;;;232:12;224:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;297:4;283:11;;:18;;;;;;;;;;;;;;;;;;3774:30:95;3793:10;3774:18;:30::i;:::-;3725:84::o;899:77:4:-;937:7;963:6;;;;;;;;;;;956:13;;899:77;:::o;1250:92::-;1290:4;1329:6;;;;;;;;;;;1313:22;;:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;2478:55:95:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2607:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1970:107:4:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;5092:667:95:-;1103:9:4;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5191:32:95;5226:21;:28;;;;5191:63;;5276:24;5268:5;:32;5260:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5374:13;5342:45;;:21;5364:5;5342:28;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;5327:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5523:1;5496:24;:28;5487:5;:37;5483:186;;5611:21;5660:1;5633:24;:28;5611:51;;;;;;;;;;;;;;;;;;;;;;;;;5580:21;5602:5;5580:28;;;;;;;;;;;;;;;;:82;;;;;;;;;;;;;;;;;;5483:186;5674:21;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5740:13;5712:42;;;;;;;;;;;;1159:1:4;5092:667:95;;:::o;18786:2396::-;19004:4;19041:1;19024:19;;:5;:19;;;;:32;;;;;19055:1;19047:5;:9;19024:32;:53;;;;;19076:1;19060:13;:17;19024:53;19016:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19143:1;19129:15;;:10;:15;:38;;;;;19166:1;19148:15;:19;19129:38;19127:41;19112:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19536:1;19517:15;:20;:49;;;;;19565:1;19541:14;:21;:25;19517:49;19515:52;19500:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3117:3;19798:14;:21;:56;;19783:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19909:26;19938:17;:15;:17::i;:::-;19909:46;;19995:12;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19995:33:95;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19995:33:95;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19995:33:95;;;;;;;;;;;;;;;;19976:15;:52;;19961:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20084:17;20104:49;20151:1;20104:14;:26;20119:10;20104:26;;;;;;;;;;;;;;;20136:9;20104:42;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;20104:42:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:46;;:49;;;;:::i;:::-;20084:69;;20159:21;20183:53;20234:1;20183:18;:30;20202:10;20183:30;;;;;;;;;;;20219:9;20183:46;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;20183:46:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:50;;:53;;;;:::i;:::-;20159:77;;20243:34;20280:16;:27;20297:9;20280:27;;;;;;;;;;;;;;;20243:64;;20345:1;20321:10;:20;;;:25;20313:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20412:10;20379;:30;;:43;;;;20448:10;20428;:17;;;:30;;;;;;;;;;;;;;;;;;20483:5;20464:10;:16;;;:24;;;;;;;;;;;;;;;;;;20513:5;20494:10;:16;;:24;;;;20547:9;20524:10;:20;;:32;;;;20589:13;20562:10;:24;;:40;;;;20631:15;20608:10;:20;;:38;;;;20679:13;20652:10;:24;;:40;;;;20727:15;20698:10;:26;;:44;;;;20816:1;20792:14;:21;:25;20788:98;;;20865:14;20827:24;:35;20852:9;20827:35;;;;;;;;;;;;;;;:52;;;;;;;;;;;;:::i;:::-;;20788:98;20892:63;20922:10;20942:4;20949:5;20898;20892:29;;;;:63;;;;;;:::i;:::-;20999:5;20966:74;;20987:10;20975;20966:74;;;21006:5;21013:9;21024:15;20966:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21134:9;21116:44;;;21145:14;21116:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;21116:44:95;;;;;;;;;;;;;;;;;21173:4;21166:11;;;;;;18786:2396;;;;;;;;;:::o;15775:601::-;15997:4;16014:9;16026:1;16014:13;;16009:345;16033:14;:21;16029:1;:25;16009:345;;;16103:19;16082:40;;:14;16097:1;16082:17;;;;;;;;;;;;;;:40;;;16078:73;;16134:8;;16078:73;16262:85;16289:19;16310:10;16322:7;16331:15;16262:26;:85::i;:::-;16255:92;;;;;16009:345;16060:8;16066:1;16060;:5;;:8;;;;:::i;:::-;16056:12;;16009:345;;;;16366:5;16359:12;;15775:601;;;;;;;;:::o;16867:645::-;17012:4;17078:44;17125:26;:24;:26::i;:::-;17078:73;;17160:25;17195:21;:40;;;17243:10;17261:14;17195:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17195:86:95;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17195:86:95;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17195:86:95;;;;;;39:16:-1;36:1;17:17;2:54;17195:86:95;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13:3;8;5:12;2:2;;;30:1;27;20:12;2:2;17195:86:95;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;17195:86:95;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17195:86:95;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;17195:86:95;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17195:86:95;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;17195:86:95;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17195:86:95;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;17195:86:95;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17195:86:95;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;17195:86:95;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17195:86:95;;;;;;;;;;;17157:124;;;;;;17368:9;17380:1;17368:13;;17363:127;17387:8;:15;17383:1;:19;17363:127;;;17445:7;17430:22;;:8;17439:1;17430:11;;;;;;;;;;;;;;:22;;;17426:58;;;17471:4;17464:11;;;;;;;17426:58;17408:8;17414:1;17408;:5;;:8;;;;:::i;:::-;17404:12;;17363:127;;;;17502:5;17495:12;;;;16867:645;;;;;;:::o;14670:408::-;14840:4;14852:26;14895:19;14852:63;;14922:28;14956:12;:32;;;14989:10;15001:7;14956:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14956:53:95;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14956:53:95;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14956:53:95;;;;;;;;;;;;;;;;;;;;;;;;;14921:88;;;;;15057:15;15031:21;15023:30;;:49;;15015:58;;;;14670:408;;;;;;:::o;21386:769::-;21442:31;21476:16;:27;21493:9;21476:27;;;;;;;;;;;;;;;21442:61;;21509:26;21538:18;:47;21557:7;:27;;;21538:47;;;;;;;;;;;21509:76;;21591:22;21616:14;:30;21631:7;:14;;;;;;;;;;;;21616:30;;;;;;;;;;;;;;;21591:55;;21717:7;:21;;;21653:16;:47;21670:8;21697:1;21679:8;:15;;;;:19;21670:29;;;;;;;;;;;;;;;;;;;;;;;;;21653:47;;;;;;;;;;;;;;;:61;;:85;;;;21778:8;21805:1;21787:8;:15;;;;:19;21778:29;;;;;;;;;;;;;;;;;;;;;;;;;21744:8;21753:7;:21;;;21744:31;;;;;;;;;;;;;;;;:63;;;;;;;;;;;;;;;;;;21831:22;21851:1;21831:8;:15;;;;:19;;:22;;;;:::i;:::-;21813:8;:40;;;;;:::i;:::-;;21912:7;:17;;;21860:16;:39;21877:4;21896:1;21882:4;:11;;;;:15;21877:21;;;;;;;;;;;;;;;;;;;;;;;;;21860:39;;;;;;;;;;;;;;;:49;;:69;;;;21961:4;21980:1;21966:4;:11;;;;:15;21961:21;;;;;;;;;;;;;;;;;;;;;;;;;21935:4;21940:7;:17;;;21935:23;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;22002:18;22018:1;22002:4;:11;;;;:15;;:18;;;;:::i;:::-;21988:4;:32;;;;;:::i;:::-;;22034:16;:27;22051:9;22034:27;;;;;;;;;;;;;;;;22027:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22074:24;:35;22099:9;22074:35;;;;;;;;;;;;;;;;22067:42;;;;:::i;:::-;22140:9;22120:30;;;;;;;;;;;;21386:769;;;;:::o;662:174:7:-;744:85;763:5;793;:14;;;:23;;;;818:2;822:5;770:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;770:58:7;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;770:58:7;744:18;:85::i;:::-;662:174;;;:::o;834:176:3:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;2178:225:4:-;2271:1;2251:22;;:8;:22;;;;2243:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2360:8;2331:38;;2352:6;;;;;;;;;;;2331:38;;;;;;;;;;;;2388:8;2379:6;;:17;;;;;;;;;;;;;;;;;;2178:225;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;3881:159:27:-;3931:13;949:42;3973:35;;;1226:32;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1226:32:27;;;1216:43;;;;;;3973:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3973:61:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3973:61:27;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3973:61:27;;;;;;;;;;;;;;;;3952:83;;3881:159;:::o;1274:134:3:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;842:202:7:-;942:95;961:5;991;:18;;;:27;;;;1020:4;1026:2;1030:5;968:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;968:68:7;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;968:68:7;942:18;:95::i;:::-;842:202;;;;:::o;4975:218:27:-;5034:22;949:42;5109:35;;;2093:41;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2093:41:27;;;2078:60;;;;;;5109:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5109:71:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5109:71:27;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5109:71:27;;;;;;;;;;;;;;;;5064:124;;4975:218;:::o;2666:1095:7:-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3436:25:7;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:7;;;;3479:7;3471:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:1;3538:10;:17;:21;3534:221;;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:30:7;;;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:221;2666:1095;;;;:::o;1732:187:3:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;686:610:8:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o;650:21507:95:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
+ "source": "pragma solidity ^0.5.13;\n\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/ownership/Ownable.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\";\n\nimport \"./interfaces/IAttestations.sol\";\nimport \"./interfaces/IFederatedAttestations.sol\";\nimport \"./interfaces/IEscrow.sol\";\nimport \"../common/Initializable.sol\";\nimport \"../common/interfaces/ICeloVersionedContract.sol\";\nimport \"../common/UsingRegistryV2BackwardsCompatible.sol\";\nimport \"../common/Signatures.sol\";\nimport \"../common/libraries/ReentrancyGuard.sol\";\n\ncontract Escrow is\n IEscrow,\n ICeloVersionedContract,\n ReentrancyGuard,\n Ownable,\n Initializable,\n // Maintain storage alignment since Escrow was initially deployed with UsingRegistry.sol\n UsingRegistryV2BackwardsCompatible\n{\n using SafeMath for uint256;\n using SafeERC20 for ERC20;\n\n event DefaultTrustedIssuerAdded(address indexed trustedIssuer);\n event DefaultTrustedIssuerRemoved(address indexed trustedIssuer);\n\n event Transfer(\n address indexed from,\n bytes32 indexed identifier,\n address indexed token,\n uint256 value,\n address paymentId,\n uint256 minAttestations\n );\n\n event TrustedIssuersSet(address indexed paymentId, address[] trustedIssuers);\n event TrustedIssuersUnset(address indexed paymentId);\n\n event Withdrawal(\n bytes32 indexed identifier,\n // Note that in previous versions of Escrow.sol, `to` referenced\n // the original sender of the payment\n address indexed to,\n address indexed token,\n uint256 value,\n address paymentId\n );\n\n event Revocation(\n bytes32 indexed identifier,\n address indexed by,\n address indexed token,\n uint256 value,\n address paymentId\n );\n\n struct EscrowedPayment {\n bytes32 recipientIdentifier;\n address sender;\n address token;\n uint256 value;\n uint256 sentIndex; // Location of this payment in sender's list of sent payments.\n uint256 receivedIndex; // Location of this payment in receivers's list of received payments.\n uint256 timestamp;\n uint256 expirySeconds;\n uint256 minAttestations;\n }\n\n // Maps unique payment IDs to escrowed payments.\n // These payment IDs are the temporary wallet addresses created with the escrowed payments.\n mapping(address => EscrowedPayment) public escrowedPayments;\n\n // Maps receivers' identifiers to a list of received escrowed payment IDs.\n mapping(bytes32 => address[]) public receivedPaymentIds;\n\n // Maps senders' addresses to a list of sent escrowed payment IDs.\n mapping(address => address[]) public sentPaymentIds;\n\n // Maps payment ID to a list of issuers whose attestations will be accepted.\n mapping(address => address[]) public trustedIssuersPerPayment;\n\n // Governable list of trustedIssuers to set for payments by default.\n address[] public defaultTrustedIssuers;\n\n // Based on benchmarking of FederatedAttestations lookup gas consumption\n // in the worst case (with a significant amount of buffer).\n uint256 public constant MAX_TRUSTED_ISSUERS_PER_PAYMENT = 100;\n\n /**\n * @notice Sets initialized == true on implementation contracts\n * @param test Set to true to skip implementation initialization\n */\n constructor(bool test) public Initializable(test) {}\n\n /**\n * @notice Returns the storage, major, minor, and patch version of the contract.\n * @return The storage, major, minor, and patch version of the contract.\n */\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) {\n return (1, 2, 0, 0);\n }\n\n /**\n * @notice Used in place of the constructor to allow the contract to be upgradable via proxy.\n */\n function initialize() external initializer {\n _transferOwnership(msg.sender);\n }\n\n /**\n * @notice Add an address to the defaultTrustedIssuers list.\n * @param trustedIssuer Address of the trustedIssuer to add.\n * @dev Throws if trustedIssuer is null or already in defaultTrustedIssuers.\n * @dev Throws if defaultTrustedIssuers is already at max allowed length.\n */\n function addDefaultTrustedIssuer(address trustedIssuer) external onlyOwner {\n require(address(0) != trustedIssuer, \"trustedIssuer can't be null\");\n require(\n defaultTrustedIssuers.length.add(1) <= MAX_TRUSTED_ISSUERS_PER_PAYMENT,\n \"defaultTrustedIssuers.length can't exceed allowed number of trustedIssuers\"\n );\n\n // Ensure list of trusted issuers is unique\n for (uint256 i = 0; i < defaultTrustedIssuers.length; i = i.add(1)) {\n require(\n defaultTrustedIssuers[i] != trustedIssuer,\n \"trustedIssuer already in defaultTrustedIssuers\"\n );\n }\n defaultTrustedIssuers.push(trustedIssuer);\n emit DefaultTrustedIssuerAdded(trustedIssuer);\n }\n\n /**\n * @notice Remove an address from the defaultTrustedIssuers list.\n * @param trustedIssuer Address of the trustedIssuer to remove.\n * @param index Index of trustedIssuer in defaultTrustedIssuers.\n * @dev Throws if trustedIssuer is not in defaultTrustedIssuers at index.\n */\n function removeDefaultTrustedIssuer(address trustedIssuer, uint256 index) external onlyOwner {\n uint256 numDefaultTrustedIssuers = defaultTrustedIssuers.length;\n require(index < numDefaultTrustedIssuers, \"index is invalid\");\n require(\n defaultTrustedIssuers[index] == trustedIssuer,\n \"trustedIssuer does not match address found at defaultTrustedIssuers[index]\"\n );\n if (index != numDefaultTrustedIssuers - 1) {\n // Swap last index with index-to-remove\n defaultTrustedIssuers[index] = defaultTrustedIssuers[numDefaultTrustedIssuers - 1];\n }\n defaultTrustedIssuers.pop();\n emit DefaultTrustedIssuerRemoved(trustedIssuer);\n }\n\n /**\n * @notice Transfer tokens to a specific user. Supports both identity with privacy (an empty\n * identifier and 0 minAttestations) and without (with identifier and minAttestations).\n * Sets trustedIssuers to the issuers listed in `defaultTrustedIssuers`.\n * (To override this and set custom trusted issuers, use `transferWithTrustedIssuers`.)\n * @param identifier The hashed identifier of a user to transfer to.\n * @param token The token to be transferred.\n * @param value The amount to be transferred.\n * @param expirySeconds The number of seconds before the sender can revoke the payment.\n * @param paymentId The address of the temporary wallet associated with this payment. Users must\n * prove ownership of the corresponding private key to withdraw from escrow.\n * @param minAttestations The min number of attestations required to withdraw the payment.\n * @return True if transfer succeeded.\n * @dev Throws if 'token' or 'value' is 0.\n * @dev Throws if identifier is null and minAttestations > 0.\n * @dev If minAttestations is 0, trustedIssuers will be set to empty list.\n * @dev msg.sender needs to have already approved this contract to transfer\n */\n // solhint-disable-next-line no-simple-event-func-name\n function transfer(\n bytes32 identifier,\n address token,\n uint256 value,\n uint256 expirySeconds,\n address paymentId,\n uint256 minAttestations\n ) external nonReentrant returns (bool) {\n address[] memory trustedIssuers;\n // If minAttestations == 0, trustedIssuers should remain empty\n if (minAttestations > 0) {\n trustedIssuers = defaultTrustedIssuers;\n }\n return\n _transfer(\n identifier,\n token,\n value,\n expirySeconds,\n paymentId,\n minAttestations,\n trustedIssuers\n );\n }\n\n /**\n * @notice Transfer tokens to a specific user. Supports both identity with privacy (an empty\n * identifier and 0 minAttestations) and without (with identifier\n * and attestations completed by trustedIssuers).\n * @param identifier The hashed identifier of a user to transfer to.\n * @param token The token to be transferred.\n * @param value The amount to be transferred.\n * @param expirySeconds The number of seconds before the sender can revoke the payment.\n * @param paymentId The address of the temporary wallet associated with this payment. Users must\n * prove ownership of the corresponding private key to withdraw from escrow.\n * @param minAttestations The min number of attestations required to withdraw the payment.\n * @param trustedIssuers Array of issuers whose attestations in FederatedAttestations.sol\n * will be accepted to prove ownership over an identifier.\n * @return True if transfer succeeded.\n * @dev Throws if 'token' or 'value' is 0.\n * @dev Throws if identifier is null and minAttestations > 0.\n * @dev Throws if minAttestations == 0 but trustedIssuers are provided.\n * @dev msg.sender needs to have already approved this contract to transfer.\n */\n function transferWithTrustedIssuers(\n bytes32 identifier,\n address token,\n uint256 value,\n uint256 expirySeconds,\n address paymentId,\n uint256 minAttestations,\n address[] calldata trustedIssuers\n ) external nonReentrant returns (bool) {\n return\n _transfer(\n identifier,\n token,\n value,\n expirySeconds,\n paymentId,\n minAttestations,\n trustedIssuers\n );\n }\n\n /**\n * @notice Withdraws tokens for a verified user.\n * @param paymentId The ID for the EscrowedPayment struct that contains all relevant information.\n * @param v The recovery id of the incoming ECDSA signature.\n * @param r Output value r of the ECDSA signature.\n * @param s Output value s of the ECDSA signature.\n * @return True if withdraw succeeded.\n * @dev Throws if 'token' or 'value' is 0.\n * @dev Throws if msg.sender does not prove ownership of the withdraw key.\n */\n function withdraw(address paymentId, uint8 v, bytes32 r, bytes32 s)\n external\n nonReentrant\n returns (bool)\n {\n address signer = Signatures.getSignerOfAddress(msg.sender, v, r, s);\n require(signer == paymentId, \"Failed to prove ownership of the withdraw key\");\n EscrowedPayment memory payment = escrowedPayments[paymentId];\n require(payment.token != address(0) && payment.value > 0, \"Invalid withdraw value.\");\n\n // Due to an old bug, there may exist payments with no identifier and minAttestations > 0\n // So ensure that these fail the attestations check, as they previously would have\n if (payment.minAttestations > 0) {\n bool passedCheck = false;\n address[] memory trustedIssuers = trustedIssuersPerPayment[paymentId];\n address attestationsAddress = registryContract.getAddressForOrDie(ATTESTATIONS_REGISTRY_ID);\n\n if (trustedIssuers.length > 0) {\n passedCheck =\n hasCompletedV1AttestationsAsTrustedIssuer(\n attestationsAddress,\n payment.recipientIdentifier,\n msg.sender,\n payment.minAttestations,\n trustedIssuers\n ) ||\n hasCompletedV2Attestations(payment.recipientIdentifier, msg.sender, trustedIssuers);\n } else {\n // This is for backwards compatibility, not default/fallback behavior\n passedCheck = hasCompletedV1Attestations(\n attestationsAddress,\n payment.recipientIdentifier,\n msg.sender,\n payment.minAttestations\n );\n }\n require(\n passedCheck,\n \"This account does not have the required attestations to withdraw this payment.\"\n );\n }\n\n deletePayment(paymentId);\n\n ERC20(payment.token).safeTransfer(msg.sender, payment.value);\n\n emit Withdrawal(\n payment.recipientIdentifier,\n msg.sender,\n payment.token,\n payment.value,\n paymentId\n );\n\n return true;\n }\n\n /**\n * @notice Revokes tokens for a sender who is redeeming a payment after it has expired.\n * @param paymentId The ID for the EscrowedPayment struct that contains all relevant information.\n * @dev Throws if 'token' or 'value' is 0.\n * @dev Throws if msg.sender is not the sender of payment.\n * @dev Throws if redeem time hasn't been reached yet.\n */\n function revoke(address paymentId) external nonReentrant returns (bool) {\n EscrowedPayment memory payment = escrowedPayments[paymentId];\n require(payment.sender == msg.sender, \"Only sender of payment can attempt to revoke payment.\");\n require(\n now >= (payment.timestamp.add(payment.expirySeconds)),\n \"Transaction not redeemable for sender yet.\"\n );\n\n deletePayment(paymentId);\n\n ERC20(payment.token).safeTransfer(msg.sender, payment.value);\n\n emit Revocation(\n payment.recipientIdentifier,\n payment.sender,\n payment.token,\n payment.value,\n paymentId\n );\n\n return true;\n\n }\n\n /**\n * @notice Gets array of all Escrowed Payments received by identifier.\n * @param identifier The hash of an identifier of the receiver of the escrowed payment.\n * @return An array containing all the IDs of the Escrowed Payments that were received\n * by the specified receiver.\n */\n function getReceivedPaymentIds(bytes32 identifier) external view returns (address[] memory) {\n return receivedPaymentIds[identifier];\n }\n\n /**\n * @notice Gets array of all Escrowed Payment IDs sent by sender.\n * @param sender The address of the sender of the escrowed payments.\n * @return An array containing all the IDs of the Escrowed Payments that were sent by the\n * specified sender.\n */\n function getSentPaymentIds(address sender) external view returns (address[] memory) {\n return sentPaymentIds[sender];\n }\n\n /**\n * @notice Gets array of all trusted issuers set per paymentId.\n * @param paymentId The ID of the payment to get.\n * @return An array of addresses of trusted issuers set for an escrowed payment.\n */\n function getTrustedIssuersPerPayment(address paymentId) external view returns (address[] memory) {\n return trustedIssuersPerPayment[paymentId];\n }\n\n /**\n * @notice Gets trusted issuers set as default for payments by `transfer` function.\n * @return An array of addresses of trusted issuers.\n */\n function getDefaultTrustedIssuers() public view returns (address[] memory) {\n return defaultTrustedIssuers;\n }\n\n /**\n * @notice Checks if account has completed minAttestations for identifier in Attestations.sol.\n * @param attestationsAddress The address of Attestations.sol.\n * @param identifier The hash of an identifier for which to look up attestations.\n * @param account The account for which to look up attestations.\n * @param minAttestations The minimum number of attestations to have completed.\n * @return Whether or not attestations in Attestations.sol\n * exceeds minAttestations for (identifier, account).\n */\n function hasCompletedV1Attestations(\n address attestationsAddress,\n bytes32 identifier,\n address account,\n uint256 minAttestations\n ) internal view returns (bool) {\n IAttestations attestations = IAttestations(attestationsAddress);\n (uint64 completedAttestations, ) = attestations.getAttestationStats(identifier, account);\n return (uint256(completedAttestations) >= minAttestations);\n }\n\n /**\n * @notice Helper function that checks if one of the trustedIssuers is the old Attestations.sol\n * contract and applies the escrow V1 check against minAttestations.\n * @param attestationsAddress The address of Attestations.sol.\n * @param identifier The hash of an identifier for which to look up attestations.\n * @param account The account for which to look up attestations.\n * @param minAttestations The minimum number of attestations to have completed.\n * @param trustedIssuers The trustedIssuer addresses to search through.\n * @return Whether or not a trustedIssuer is Attestations.sol & attestations\n * exceed minAttestations for (identifier, account).\n */\n function hasCompletedV1AttestationsAsTrustedIssuer(\n address attestationsAddress,\n bytes32 identifier,\n address account,\n uint256 minAttestations,\n address[] memory trustedIssuers\n ) internal view returns (bool) {\n for (uint256 i = 0; i < trustedIssuers.length; i = i.add(1)) {\n if (trustedIssuers[i] != attestationsAddress) {\n continue;\n }\n // This can be false; one of the several trustedIssuers listed needs to prove attestations\n return hasCompletedV1Attestations(attestationsAddress, identifier, account, minAttestations);\n }\n return false;\n }\n\n /**\n * @notice Checks if there are attestations for account <-> identifier from\n * any of trustedIssuers in FederatedAttestations.sol.\n * @param identifier The hash of an identifier for which to look up attestations.\n * @param account The account for which to look up attestations.\n * @param trustedIssuers Issuer addresses whose attestations to trust.\n * @return Whether or not attestations exist in FederatedAttestations.sol\n * for (identifier, account).\n */\n function hasCompletedV2Attestations(\n bytes32 identifier,\n address account,\n address[] memory trustedIssuers\n ) internal view returns (bool) {\n // Check for an attestation from a trusted issuer\n IFederatedAttestations federatedAttestations = getFederatedAttestations();\n (, address[] memory accounts, , , ) = federatedAttestations.lookupAttestations(\n identifier,\n trustedIssuers\n );\n // Check if an attestation was found for recipientIdentifier -> account\n for (uint256 i = 0; i < accounts.length; i = i.add(1)) {\n if (accounts[i] == account) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * @notice Helper function for `transferWithTrustedIssuers` and `transfer`, to\n * enable backwards-compatible function signature for `transfer`,\n * and since `transfer` cannot directly call `transferWithTrustedIssuers`\n * due to reentrancy guard.\n * @param identifier The hashed identifier of a user to transfer to.\n * @param token The token to be transferred.\n * @param value The amount to be transferred.\n * @param expirySeconds The number of seconds before the sender can revoke the payment.\n * @param paymentId The address of the temporary wallet associated with this payment. Users must\n * prove ownership of the corresponding private key to withdraw from escrow.\n * @param minAttestations The min number of attestations required to withdraw the payment.\n * @param trustedIssuers Array of issuers whose attestations in FederatedAttestations.sol\n * will be accepted to prove ownership over an identifier.\n * @return True if transfer succeeded.\n * @dev Throws if 'token' or 'value' is 0.\n * @dev Throws if identifier is null and minAttestations > 0.\n * @dev Throws if minAttestations == 0 but trustedIssuers are provided.\n * @dev msg.sender needs to have already approved this contract to transfer.\n */\n function _transfer(\n bytes32 identifier,\n address token,\n uint256 value,\n uint256 expirySeconds,\n address paymentId,\n uint256 minAttestations,\n address[] memory trustedIssuers\n ) private returns (bool) {\n require(token != address(0) && value > 0 && expirySeconds > 0, \"Invalid transfer inputs.\");\n require(\n !(identifier == 0 && minAttestations > 0),\n \"Invalid privacy inputs: Can't require attestations if no identifier\"\n );\n // Withdraw logic with trustedIssuers in FederatedAttestations disregards\n // minAttestations, so ensure that this is not set to 0 to prevent confusing behavior\n // This also implies: if identifier == 0 => trustedIssuers.length == 0\n require(\n !(minAttestations == 0 && trustedIssuers.length > 0),\n \"trustedIssuers may only be set when attestations are required\"\n );\n\n // Ensure that withdrawal will not fail due to exceeding trustedIssuer limit\n // in FederatedAttestations.lookupAttestations\n require(\n trustedIssuers.length <= MAX_TRUSTED_ISSUERS_PER_PAYMENT,\n \"Too many trustedIssuers provided\"\n );\n\n IAttestations attestations = getAttestations();\n require(\n minAttestations <= attestations.getMaxAttestations(),\n \"minAttestations larger than limit\"\n );\n\n uint256 sentIndex = sentPaymentIds[msg.sender].push(paymentId).sub(1);\n uint256 receivedIndex = receivedPaymentIds[identifier].push(paymentId).sub(1);\n\n EscrowedPayment storage newPayment = escrowedPayments[paymentId];\n require(newPayment.timestamp == 0, \"paymentId already used\");\n newPayment.recipientIdentifier = identifier;\n newPayment.sender = msg.sender;\n newPayment.token = token;\n newPayment.value = value;\n newPayment.sentIndex = sentIndex;\n newPayment.receivedIndex = receivedIndex;\n newPayment.timestamp = block.timestamp;\n newPayment.expirySeconds = expirySeconds;\n newPayment.minAttestations = minAttestations;\n\n // Avoid unnecessary storage write\n if (trustedIssuers.length > 0) {\n trustedIssuersPerPayment[paymentId] = trustedIssuers;\n }\n\n ERC20(token).safeTransferFrom(msg.sender, address(this), value);\n emit Transfer(msg.sender, identifier, token, value, paymentId, minAttestations);\n // Split into a second event for ABI backwards compatibility\n emit TrustedIssuersSet(paymentId, trustedIssuers);\n return true;\n }\n\n /**\n * @notice Deletes the payment from its receiver's and sender's lists of payments,\n * and zeroes out all the data in the struct.\n * @param paymentId The ID of the payment to be deleted.\n */\n function deletePayment(address paymentId) private {\n EscrowedPayment storage payment = escrowedPayments[paymentId];\n address[] storage received = receivedPaymentIds[payment.recipientIdentifier];\n address[] storage sent = sentPaymentIds[payment.sender];\n\n escrowedPayments[received[received.length - 1]].receivedIndex = payment.receivedIndex;\n received[payment.receivedIndex] = received[received.length - 1];\n received.length = received.length.sub(1);\n\n escrowedPayments[sent[sent.length - 1]].sentIndex = payment.sentIndex;\n sent[payment.sentIndex] = sent[sent.length - 1];\n sent.length = sent.length.sub(1);\n\n delete escrowedPayments[paymentId];\n delete trustedIssuersPerPayment[paymentId];\n emit TrustedIssuersUnset(paymentId);\n }\n}\n",
+ "sourcePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/identity/Escrow.sol",
+ "ast": {
+ "absolutePath": "project:/contracts/identity/Escrow.sol",
+ "exportedSymbols": {
+ "Escrow": [
+ 33717
+ ]
+ },
+ "id": 33718,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 32601,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".13"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:95"
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "id": 32602,
+ "nodeType": "ImportDirective",
+ "scope": 33718,
+ "sourceUnit": 364,
+ "src": "26:59:95",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "id": 32603,
+ "nodeType": "ImportDirective",
+ "scope": 33718,
+ "sourceUnit": 482,
+ "src": "86:63:95",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol",
+ "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol",
+ "id": 32604,
+ "nodeType": "ImportDirective",
+ "scope": 33718,
+ "sourceUnit": 887,
+ "src": "150:63:95",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol",
+ "file": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol",
+ "id": 32605,
+ "nodeType": "ImportDirective",
+ "scope": 33718,
+ "sourceUnit": 1176,
+ "src": "214:67:95",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "project:/contracts/identity/interfaces/IAttestations.sol",
+ "file": "./interfaces/IAttestations.sol",
+ "id": 32606,
+ "nodeType": "ImportDirective",
+ "scope": 33718,
+ "sourceUnit": 35925,
+ "src": "283:40:95",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "project:/contracts/identity/interfaces/IFederatedAttestations.sol",
+ "file": "./interfaces/IFederatedAttestations.sol",
+ "id": 32607,
+ "nodeType": "ImportDirective",
+ "scope": 33718,
+ "sourceUnit": 36154,
+ "src": "324:49:95",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "project:/contracts/identity/interfaces/IEscrow.sol",
+ "file": "./interfaces/IEscrow.sol",
+ "id": 32608,
+ "nodeType": "ImportDirective",
+ "scope": 33718,
+ "sourceUnit": 36032,
+ "src": "374:34:95",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "project:/contracts/common/Initializable.sol",
+ "file": "../common/Initializable.sol",
+ "id": 32609,
+ "nodeType": "ImportDirective",
+ "scope": 33718,
+ "sourceUnit": 5885,
+ "src": "409:37:95",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "project:/contracts/common/interfaces/ICeloVersionedContract.sol",
+ "file": "../common/interfaces/ICeloVersionedContract.sol",
+ "id": 32610,
+ "nodeType": "ImportDirective",
+ "scope": 33718,
+ "sourceUnit": 9108,
+ "src": "447:57:95",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "project:/contracts/common/UsingRegistryV2BackwardsCompatible.sol",
+ "file": "../common/UsingRegistryV2BackwardsCompatible.sol",
+ "id": 32611,
+ "nodeType": "ImportDirective",
+ "scope": 33718,
+ "sourceUnit": 8810,
+ "src": "505:58:95",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "project:/contracts/common/Signatures.sol",
+ "file": "../common/Signatures.sol",
+ "id": 32612,
+ "nodeType": "ImportDirective",
+ "scope": 33718,
+ "sourceUnit": 6903,
+ "src": "564:34:95",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "project:/contracts/common/libraries/ReentrancyGuard.sol",
+ "file": "../common/libraries/ReentrancyGuard.sol",
+ "id": 32613,
+ "nodeType": "ImportDirective",
+ "scope": 33718,
+ "sourceUnit": 9486,
+ "src": "599:49:95",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "baseContracts": [
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 32614,
+ "name": "IEscrow",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 36031,
+ "src": "671:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IEscrow_$36031",
+ "typeString": "contract IEscrow"
+ }
+ },
+ "id": 32615,
+ "nodeType": "InheritanceSpecifier",
+ "src": "671:7:95"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 32616,
+ "name": "ICeloVersionedContract",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 9107,
+ "src": "682:22:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_ICeloVersionedContract_$9107",
+ "typeString": "contract ICeloVersionedContract"
+ }
+ },
+ "id": 32617,
+ "nodeType": "InheritanceSpecifier",
+ "src": "682:22:95"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 32618,
+ "name": "ReentrancyGuard",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 9485,
+ "src": "708:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_ReentrancyGuard_$9485",
+ "typeString": "contract ReentrancyGuard"
+ }
+ },
+ "id": 32619,
+ "nodeType": "InheritanceSpecifier",
+ "src": "708:15:95"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 32620,
+ "name": "Ownable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 481,
+ "src": "727:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Ownable_$481",
+ "typeString": "contract Ownable"
+ }
+ },
+ "id": 32621,
+ "nodeType": "InheritanceSpecifier",
+ "src": "727:7:95"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 32622,
+ "name": "Initializable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 5884,
+ "src": "738:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Initializable_$5884",
+ "typeString": "contract Initializable"
+ }
+ },
+ "id": 32623,
+ "nodeType": "InheritanceSpecifier",
+ "src": "738:13:95"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 32624,
+ "name": "UsingRegistryV2BackwardsCompatible",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 8809,
+ "src": "846:34:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_UsingRegistryV2BackwardsCompatible_$8809",
+ "typeString": "contract UsingRegistryV2BackwardsCompatible"
+ }
+ },
+ "id": 32625,
+ "nodeType": "InheritanceSpecifier",
+ "src": "846:34:95"
+ }
+ ],
+ "contractDependencies": [
+ 26,
+ 481,
+ 5884,
+ 8801,
+ 8809,
+ 9107,
+ 9485,
+ 36031
+ ],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "id": 33717,
+ "linearizedBaseContracts": [
+ 33717,
+ 8809,
+ 8801,
+ 5884,
+ 481,
+ 26,
+ 9485,
+ 9107,
+ 36031
+ ],
+ "name": "Escrow",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "id": 32628,
+ "libraryName": {
+ "contractScope": null,
+ "id": 32626,
+ "name": "SafeMath",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 363,
+ "src": "891:8:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_SafeMath_$363",
+ "typeString": "library SafeMath"
+ }
+ },
+ "nodeType": "UsingForDirective",
+ "src": "885:27:95",
+ "typeName": {
+ "id": 32627,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "904:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ },
+ {
+ "id": 32631,
+ "libraryName": {
+ "contractScope": null,
+ "id": 32629,
+ "name": "SafeERC20",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 1175,
+ "src": "921:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_SafeERC20_$1175",
+ "typeString": "library SafeERC20"
+ }
+ },
+ "nodeType": "UsingForDirective",
+ "src": "915:26:95",
+ "typeName": {
+ "contractScope": null,
+ "id": 32630,
+ "name": "ERC20",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 886,
+ "src": "935:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_ERC20_$886",
+ "typeString": "contract ERC20"
+ }
+ }
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 32635,
+ "name": "DefaultTrustedIssuerAdded",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 32634,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 32633,
+ "indexed": true,
+ "name": "trustedIssuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 32635,
+ "src": "977:29:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32632,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "977:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "976:31:95"
+ },
+ "src": "945:63:95"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 32639,
+ "name": "DefaultTrustedIssuerRemoved",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 32638,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 32637,
+ "indexed": true,
+ "name": "trustedIssuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 32639,
+ "src": "1045:29:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32636,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1045:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1044:31:95"
+ },
+ "src": "1011:65:95"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 32653,
+ "name": "Transfer",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 32652,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 32641,
+ "indexed": true,
+ "name": "from",
+ "nodeType": "VariableDeclaration",
+ "scope": 32653,
+ "src": "1100:20:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32640,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1100:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32643,
+ "indexed": true,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 32653,
+ "src": "1126:26:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 32642,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1126:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32645,
+ "indexed": true,
+ "name": "token",
+ "nodeType": "VariableDeclaration",
+ "scope": 32653,
+ "src": "1158:21:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32644,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1158:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32647,
+ "indexed": false,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 32653,
+ "src": "1185:13:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32646,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1185:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32649,
+ "indexed": false,
+ "name": "paymentId",
+ "nodeType": "VariableDeclaration",
+ "scope": 32653,
+ "src": "1204:17:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32648,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1204:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32651,
+ "indexed": false,
+ "name": "minAttestations",
+ "nodeType": "VariableDeclaration",
+ "scope": 32653,
+ "src": "1227:23:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32650,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1227:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1094:160:95"
+ },
+ "src": "1080:175:95"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 32660,
+ "name": "TrustedIssuersSet",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 32659,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 32655,
+ "indexed": true,
+ "name": "paymentId",
+ "nodeType": "VariableDeclaration",
+ "scope": 32660,
+ "src": "1283:25:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32654,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1283:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32658,
+ "indexed": false,
+ "name": "trustedIssuers",
+ "nodeType": "VariableDeclaration",
+ "scope": 32660,
+ "src": "1310:24:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 32656,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1310:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 32657,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "1310:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1282:53:95"
+ },
+ "src": "1259:77:95"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 32664,
+ "name": "TrustedIssuersUnset",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 32663,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 32662,
+ "indexed": true,
+ "name": "paymentId",
+ "nodeType": "VariableDeclaration",
+ "scope": 32664,
+ "src": "1365:25:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32661,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1365:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1364:27:95"
+ },
+ "src": "1339:53:95"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 32676,
+ "name": "Withdrawal",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 32675,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 32666,
+ "indexed": true,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 32676,
+ "src": "1418:26:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 32665,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1418:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32668,
+ "indexed": true,
+ "name": "to",
+ "nodeType": "VariableDeclaration",
+ "scope": 32676,
+ "src": "1561:18:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32667,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1561:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32670,
+ "indexed": true,
+ "name": "token",
+ "nodeType": "VariableDeclaration",
+ "scope": 32676,
+ "src": "1585:21:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32669,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1585:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32672,
+ "indexed": false,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 32676,
+ "src": "1612:13:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32671,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1612:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32674,
+ "indexed": false,
+ "name": "paymentId",
+ "nodeType": "VariableDeclaration",
+ "scope": 32676,
+ "src": "1631:17:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32673,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1631:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1412:240:95"
+ },
+ "src": "1396:257:95"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 32688,
+ "name": "Revocation",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 32687,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 32678,
+ "indexed": true,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 32688,
+ "src": "1679:26:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 32677,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1679:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32680,
+ "indexed": true,
+ "name": "by",
+ "nodeType": "VariableDeclaration",
+ "scope": 32688,
+ "src": "1711:18:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32679,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1711:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32682,
+ "indexed": true,
+ "name": "token",
+ "nodeType": "VariableDeclaration",
+ "scope": 32688,
+ "src": "1735:21:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32681,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1735:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32684,
+ "indexed": false,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 32688,
+ "src": "1762:13:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32683,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1762:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32686,
+ "indexed": false,
+ "name": "paymentId",
+ "nodeType": "VariableDeclaration",
+ "scope": 32688,
+ "src": "1781:17:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32685,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1781:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1673:129:95"
+ },
+ "src": "1657:146:95"
+ },
+ {
+ "canonicalName": "Escrow.EscrowedPayment",
+ "id": 32707,
+ "members": [
+ {
+ "constant": false,
+ "id": 32690,
+ "name": "recipientIdentifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 32707,
+ "src": "1836:27:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 32689,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1836:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32692,
+ "name": "sender",
+ "nodeType": "VariableDeclaration",
+ "scope": 32707,
+ "src": "1869:14:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32691,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1869:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32694,
+ "name": "token",
+ "nodeType": "VariableDeclaration",
+ "scope": 32707,
+ "src": "1889:13:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32693,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1889:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32696,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 32707,
+ "src": "1908:13:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32695,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1908:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32698,
+ "name": "sentIndex",
+ "nodeType": "VariableDeclaration",
+ "scope": 32707,
+ "src": "1927:17:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32697,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1927:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32700,
+ "name": "receivedIndex",
+ "nodeType": "VariableDeclaration",
+ "scope": 32707,
+ "src": "2013:21:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32699,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2013:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32702,
+ "name": "timestamp",
+ "nodeType": "VariableDeclaration",
+ "scope": 32707,
+ "src": "2110:17:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32701,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2110:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32704,
+ "name": "expirySeconds",
+ "nodeType": "VariableDeclaration",
+ "scope": 32707,
+ "src": "2133:21:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32703,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2133:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32706,
+ "name": "minAttestations",
+ "nodeType": "VariableDeclaration",
+ "scope": 32707,
+ "src": "2160:23:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32705,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2160:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "name": "EscrowedPayment",
+ "nodeType": "StructDefinition",
+ "scope": 33717,
+ "src": "1807:381:95",
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 32711,
+ "name": "escrowedPayments",
+ "nodeType": "VariableDeclaration",
+ "scope": 33717,
+ "src": "2337:59:95",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_EscrowedPayment_$32707_storage_$",
+ "typeString": "mapping(address => struct Escrow.EscrowedPayment)"
+ },
+ "typeName": {
+ "id": 32710,
+ "keyType": {
+ "id": 32708,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2345:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "2337:35:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_EscrowedPayment_$32707_storage_$",
+ "typeString": "mapping(address => struct Escrow.EscrowedPayment)"
+ },
+ "valueType": {
+ "contractScope": null,
+ "id": 32709,
+ "name": "EscrowedPayment",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 32707,
+ "src": "2356:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 32716,
+ "name": "receivedPaymentIds",
+ "nodeType": "VariableDeclaration",
+ "scope": 33717,
+ "src": "2478:55:95",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
+ "typeString": "mapping(bytes32 => address[])"
+ },
+ "typeName": {
+ "id": 32715,
+ "keyType": {
+ "id": 32712,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "2486:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "2478:29:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
+ "typeString": "mapping(bytes32 => address[])"
+ },
+ "valueType": {
+ "baseType": {
+ "id": 32713,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2497:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 32714,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "2497:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 32721,
+ "name": "sentPaymentIds",
+ "nodeType": "VariableDeclaration",
+ "scope": 33717,
+ "src": "2607:51:95",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
+ "typeString": "mapping(address => address[])"
+ },
+ "typeName": {
+ "id": 32720,
+ "keyType": {
+ "id": 32717,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2615:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "2607:29:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
+ "typeString": "mapping(address => address[])"
+ },
+ "valueType": {
+ "baseType": {
+ "id": 32718,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2626:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 32719,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "2626:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 32726,
+ "name": "trustedIssuersPerPayment",
+ "nodeType": "VariableDeclaration",
+ "scope": 33717,
+ "src": "2742:61:95",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
+ "typeString": "mapping(address => address[])"
+ },
+ "typeName": {
+ "id": 32725,
+ "keyType": {
+ "id": 32722,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2750:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "2742:29:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
+ "typeString": "mapping(address => address[])"
+ },
+ "valueType": {
+ "baseType": {
+ "id": 32723,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2761:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 32724,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "2761:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 32729,
+ "name": "defaultTrustedIssuers",
+ "nodeType": "VariableDeclaration",
+ "scope": 33717,
+ "src": "2879:38:95",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 32727,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2879:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 32728,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "2879:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": true,
+ "id": 32732,
+ "name": "MAX_TRUSTED_ISSUERS_PER_PAYMENT",
+ "nodeType": "VariableDeclaration",
+ "scope": 33717,
+ "src": "3059:61:95",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32730,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3059:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "hexValue": "313030",
+ "id": 32731,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3117:3:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_100_by_1",
+ "typeString": "int_const 100"
+ },
+ "value": "100"
+ },
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 32740,
+ "nodeType": "Block",
+ "src": "3320:2:95",
+ "statements": []
+ },
+ "documentation": "@notice Sets initialized == true on implementation contracts\n@param test Set to true to skip implementation initialization",
+ "id": 32741,
+ "implemented": true,
+ "kind": "constructor",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 32737,
+ "name": "test",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32734,
+ "src": "3314:4:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 32738,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 32736,
+ "name": "Initializable",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 5884,
+ "src": "3300:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Initializable_$5884_$",
+ "typeString": "type(contract Initializable)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "3300:19:95"
+ }
+ ],
+ "name": "",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 32735,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 32734,
+ "name": "test",
+ "nodeType": "VariableDeclaration",
+ "scope": 32741,
+ "src": "3282:9:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 32733,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "3282:4:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3281:11:95"
+ },
+ "returnParameters": {
+ "id": 32739,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3320:0:95"
+ },
+ "scope": 33717,
+ "src": "3270:52:95",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 32758,
+ "nodeType": "Block",
+ "src": "3583:30:95",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 32752,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3597:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "32",
+ "id": 32753,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3600:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_2_by_1",
+ "typeString": "int_const 2"
+ },
+ "value": "2"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 32754,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3603:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 32755,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3606:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "id": 32756,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "3596:12:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_rational_1_by_1_$_t_rational_2_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$",
+ "typeString": "tuple(int_const 1,int_const 2,int_const 0,int_const 0)"
+ }
+ },
+ "functionReturnParameters": 32751,
+ "id": 32757,
+ "nodeType": "Return",
+ "src": "3589:19:95"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the storage, major, minor, and patch version of the contract.\n@return The storage, major, minor, and patch version of the contract.",
+ "id": 32759,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getVersionNumber",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 32742,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3521:2:95"
+ },
+ "returnParameters": {
+ "id": 32751,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 32744,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 32759,
+ "src": "3547:7:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32743,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3547:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32746,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 32759,
+ "src": "3556:7:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32745,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3556:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32748,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 32759,
+ "src": "3565:7:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32747,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3565:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32750,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 32759,
+ "src": "3574:7:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32749,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3574:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3546:36:95"
+ },
+ "scope": 33717,
+ "src": "3496:117:95",
+ "stateMutability": "pure",
+ "superFunction": 9106,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 32769,
+ "nodeType": "Block",
+ "src": "3768:41:95",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 32765,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "3793:3:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 32766,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3793:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 32764,
+ "name": "_transferOwnership",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 480,
+ "src": "3774:18:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 32767,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3774:30:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 32768,
+ "nodeType": "ExpressionStatement",
+ "src": "3774:30:95"
+ }
+ ]
+ },
+ "documentation": "@notice Used in place of the constructor to allow the contract to be upgradable via proxy.",
+ "id": 32770,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 32762,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 32761,
+ "name": "initializer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 5883,
+ "src": "3756:11:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "3756:11:95"
+ }
+ ],
+ "name": "initialize",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 32760,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3744:2:95"
+ },
+ "returnParameters": {
+ "id": 32763,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3768:0:95"
+ },
+ "scope": 33717,
+ "src": "3725:84:95",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 32833,
+ "nodeType": "Block",
+ "src": "4181:618:95",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 32782,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 32779,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "4203:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 32778,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "4195:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 32780,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4195:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 32781,
+ "name": "trustedIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32772,
+ "src": "4209:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "4195:27:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "747275737465644973737565722063616e2774206265206e756c6c",
+ "id": 32783,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "4224:29:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_1ecab2d2b7e7981bce4655941008cf69a669323c8e6a2fad011405733fce114b",
+ "typeString": "literal_string \"trustedIssuer can't be null\""
+ },
+ "value": "trustedIssuer can't be null"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_1ecab2d2b7e7981bce4655941008cf69a669323c8e6a2fad011405733fce114b",
+ "typeString": "literal_string \"trustedIssuer can't be null\""
+ }
+ ],
+ "id": 32777,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "4187:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 32784,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4187:67:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 32785,
+ "nodeType": "ExpressionStatement",
+ "src": "4187:67:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 32793,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 32790,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "4308:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 32787,
+ "name": "defaultTrustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32729,
+ "src": "4275:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "id": 32788,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "4275:28:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 32789,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "4275:32:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 32791,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4275:35:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 32792,
+ "name": "MAX_TRUSTED_ISSUERS_PER_PAYMENT",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32732,
+ "src": "4314:31:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "4275:70:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "64656661756c7454727573746564497373756572732e6c656e6774682063616e27742065786365656420616c6c6f776564206e756d626572206f66207472757374656449737375657273",
+ "id": 32794,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "4353:76:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_5559e8773d7dc6d8822e5a9924558b39a246312f5465314589b97ca9b568d14f",
+ "typeString": "literal_string \"defaultTrustedIssuers.length can't exceed allowed number of trustedIssuers\""
+ },
+ "value": "defaultTrustedIssuers.length can't exceed allowed number of trustedIssuers"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_5559e8773d7dc6d8822e5a9924558b39a246312f5465314589b97ca9b568d14f",
+ "typeString": "literal_string \"defaultTrustedIssuers.length can't exceed allowed number of trustedIssuers\""
+ }
+ ],
+ "id": 32786,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "4260:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 32795,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4260:175:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 32796,
+ "nodeType": "ExpressionStatement",
+ "src": "4260:175:95"
+ },
+ {
+ "body": {
+ "id": 32821,
+ "nodeType": "Block",
+ "src": "4558:139:95",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 32817,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 32813,
+ "name": "defaultTrustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32729,
+ "src": "4583:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "id": 32815,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 32814,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32798,
+ "src": "4605:1:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "4583:24:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 32816,
+ "name": "trustedIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32772,
+ "src": "4611:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "4583:41:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "7472757374656449737375657220616c726561647920696e2064656661756c745472757374656449737375657273",
+ "id": 32818,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "4634:48:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_943cbddf89bb5fd831fb270762494d8264974cb87ecb793a4d6caa24efd4a71f",
+ "typeString": "literal_string \"trustedIssuer already in defaultTrustedIssuers\""
+ },
+ "value": "trustedIssuer already in defaultTrustedIssuers"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_943cbddf89bb5fd831fb270762494d8264974cb87ecb793a4d6caa24efd4a71f",
+ "typeString": "literal_string \"trustedIssuer already in defaultTrustedIssuers\""
+ }
+ ],
+ "id": 32812,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "4566:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 32819,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4566:124:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 32820,
+ "nodeType": "ExpressionStatement",
+ "src": "4566:124:95"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 32804,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 32801,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32798,
+ "src": "4510:1:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 32802,
+ "name": "defaultTrustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32729,
+ "src": "4514:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "id": 32803,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "4514:28:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "4510:32:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 32822,
+ "initializationExpression": {
+ "assignments": [
+ 32798
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 32798,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 32822,
+ "src": "4495:9:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32797,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4495:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 32800,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 32799,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "4507:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "4495:13:95"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 32810,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 32805,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32798,
+ "src": "4544:1:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 32808,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "4554:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 32806,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32798,
+ "src": "4548:1:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 32807,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "4548:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 32809,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4548:8:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "4544:12:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 32811,
+ "nodeType": "ExpressionStatement",
+ "src": "4544:12:95"
+ },
+ "nodeType": "ForStatement",
+ "src": "4490:207:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 32826,
+ "name": "trustedIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32772,
+ "src": "4729:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 32823,
+ "name": "defaultTrustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32729,
+ "src": "4702:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "id": 32825,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "push",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "4702:26:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
+ "typeString": "function (address) returns (uint256)"
+ }
+ },
+ "id": 32827,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4702:41:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 32828,
+ "nodeType": "ExpressionStatement",
+ "src": "4702:41:95"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 32830,
+ "name": "trustedIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32772,
+ "src": "4780:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 32829,
+ "name": "DefaultTrustedIssuerAdded",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32635,
+ "src": "4754:25:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 32831,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4754:40:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 32832,
+ "nodeType": "EmitStatement",
+ "src": "4749:45:95"
+ }
+ ]
+ },
+ "documentation": "@notice Add an address to the defaultTrustedIssuers list.\n@param trustedIssuer Address of the trustedIssuer to add.\n@dev Throws if trustedIssuer is null or already in defaultTrustedIssuers.\n@dev Throws if defaultTrustedIssuers is already at max allowed length.",
+ "id": 32834,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 32775,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 32774,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 414,
+ "src": "4171:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "4171:9:95"
+ }
+ ],
+ "name": "addDefaultTrustedIssuer",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 32773,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 32772,
+ "name": "trustedIssuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 32834,
+ "src": "4139:21:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32771,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4139:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4138:23:95"
+ },
+ "returnParameters": {
+ "id": 32776,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "4181:0:95"
+ },
+ "scope": 33717,
+ "src": "4106:693:95",
+ "stateMutability": "nonpayable",
+ "superFunction": 36023,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 32890,
+ "nodeType": "Block",
+ "src": "5185:574:95",
+ "statements": [
+ {
+ "assignments": [
+ 32844
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 32844,
+ "name": "numDefaultTrustedIssuers",
+ "nodeType": "VariableDeclaration",
+ "scope": 32890,
+ "src": "5191:32:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32843,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "5191:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 32847,
+ "initialValue": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 32845,
+ "name": "defaultTrustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32729,
+ "src": "5226:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "id": 32846,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5226:28:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "5191:63:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 32851,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 32849,
+ "name": "index",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32838,
+ "src": "5268:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 32850,
+ "name": "numDefaultTrustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32844,
+ "src": "5276:24:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "5268:32:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "696e64657820697320696e76616c6964",
+ "id": 32852,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "5302:18:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_195168356eea181b0492eb7e4c1418db8030686342cbf6805a23a83ef4284799",
+ "typeString": "literal_string \"index is invalid\""
+ },
+ "value": "index is invalid"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_195168356eea181b0492eb7e4c1418db8030686342cbf6805a23a83ef4284799",
+ "typeString": "literal_string \"index is invalid\""
+ }
+ ],
+ "id": 32848,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "5260:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 32853,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5260:61:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 32854,
+ "nodeType": "ExpressionStatement",
+ "src": "5260:61:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 32860,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 32856,
+ "name": "defaultTrustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32729,
+ "src": "5342:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "id": 32858,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 32857,
+ "name": "index",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32838,
+ "src": "5364:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "5342:28:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 32859,
+ "name": "trustedIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32836,
+ "src": "5374:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "5342:45:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "7472757374656449737375657220646f6573206e6f74206d61746368206164647265737320666f756e642061742064656661756c7454727573746564497373756572735b696e6465785d",
+ "id": 32861,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "5395:76:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_255f9a563524415f0549ebd2882cd0c4d7f2d2756f57c0798919237a7c1b9d73",
+ "typeString": "literal_string \"trustedIssuer does not match address found at defaultTrustedIssuers[index]\""
+ },
+ "value": "trustedIssuer does not match address found at defaultTrustedIssuers[index]"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_255f9a563524415f0549ebd2882cd0c4d7f2d2756f57c0798919237a7c1b9d73",
+ "typeString": "literal_string \"trustedIssuer does not match address found at defaultTrustedIssuers[index]\""
+ }
+ ],
+ "id": 32855,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "5327:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 32862,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5327:150:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 32863,
+ "nodeType": "ExpressionStatement",
+ "src": "5327:150:95"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 32868,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 32864,
+ "name": "index",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32838,
+ "src": "5487:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 32867,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 32865,
+ "name": "numDefaultTrustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32844,
+ "src": "5496:24:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "-",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 32866,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "5523:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "src": "5496:28:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "5487:37:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 32880,
+ "nodeType": "IfStatement",
+ "src": "5483:186:95",
+ "trueBody": {
+ "id": 32879,
+ "nodeType": "Block",
+ "src": "5526:143:95",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 32877,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 32869,
+ "name": "defaultTrustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32729,
+ "src": "5580:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "id": 32871,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 32870,
+ "name": "index",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32838,
+ "src": "5602:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "5580:28:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 32872,
+ "name": "defaultTrustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32729,
+ "src": "5611:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "id": 32876,
+ "indexExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 32875,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 32873,
+ "name": "numDefaultTrustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32844,
+ "src": "5633:24:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "-",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 32874,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "5660:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "src": "5633:28:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "5611:51:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "5580:82:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 32878,
+ "nodeType": "ExpressionStatement",
+ "src": "5580:82:95"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "id": 32881,
+ "name": "defaultTrustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32729,
+ "src": "5674:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "id": 32883,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "pop",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5674:25:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
+ "typeString": "function ()"
+ }
+ },
+ "id": 32884,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5674:27:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 32885,
+ "nodeType": "ExpressionStatement",
+ "src": "5674:27:95"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 32887,
+ "name": "trustedIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32836,
+ "src": "5740:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 32886,
+ "name": "DefaultTrustedIssuerRemoved",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32639,
+ "src": "5712:27:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 32888,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5712:42:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 32889,
+ "nodeType": "EmitStatement",
+ "src": "5707:47:95"
+ }
+ ]
+ },
+ "documentation": "@notice Remove an address from the defaultTrustedIssuers list.\n@param trustedIssuer Address of the trustedIssuer to remove.\n@param index Index of trustedIssuer in defaultTrustedIssuers.\n@dev Throws if trustedIssuer is not in defaultTrustedIssuers at index.",
+ "id": 32891,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 32841,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 32840,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 414,
+ "src": "5175:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "5175:9:95"
+ }
+ ],
+ "name": "removeDefaultTrustedIssuer",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 32839,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 32836,
+ "name": "trustedIssuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 32891,
+ "src": "5128:21:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32835,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5128:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32838,
+ "name": "index",
+ "nodeType": "VariableDeclaration",
+ "scope": 32891,
+ "src": "5151:13:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32837,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "5151:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5127:38:95"
+ },
+ "returnParameters": {
+ "id": 32842,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5185:0:95"
+ },
+ "scope": 33717,
+ "src": "5092:667:95",
+ "stateMutability": "nonpayable",
+ "superFunction": 36030,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 32934,
+ "nodeType": "Block",
+ "src": "7228:369:95",
+ "statements": [
+ {
+ "assignments": [
+ 32913
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 32913,
+ "name": "trustedIssuers",
+ "nodeType": "VariableDeclaration",
+ "scope": 32934,
+ "src": "7234:31:95",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 32911,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "7234:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 32912,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "7234:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 32914,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "7234:31:95"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 32917,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 32915,
+ "name": "minAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32903,
+ "src": "7342:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 32916,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "7360:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "7342:19:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 32923,
+ "nodeType": "IfStatement",
+ "src": "7338:78:95",
+ "trueBody": {
+ "id": 32922,
+ "nodeType": "Block",
+ "src": "7363:53:95",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 32920,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 32918,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32913,
+ "src": "7371:14:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 32919,
+ "name": "defaultTrustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32729,
+ "src": "7388:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "src": "7371:38:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "id": 32921,
+ "nodeType": "ExpressionStatement",
+ "src": "7371:38:95"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 32925,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32893,
+ "src": "7453:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 32926,
+ "name": "token",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32895,
+ "src": "7473:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 32927,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32897,
+ "src": "7488:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 32928,
+ "name": "expirySeconds",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32899,
+ "src": "7503:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 32929,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32901,
+ "src": "7526:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 32930,
+ "name": "minAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32903,
+ "src": "7545:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 32931,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32913,
+ "src": "7570:14:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ ],
+ "id": 32924,
+ "name": "_transfer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33602,
+ "src": "7434:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bool_$",
+ "typeString": "function (bytes32,address,uint256,uint256,address,uint256,address[] memory) returns (bool)"
+ }
+ },
+ "id": 32932,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7434:158:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 32909,
+ "id": 32933,
+ "nodeType": "Return",
+ "src": "7421:171:95"
+ }
+ ]
+ },
+ "documentation": "@notice Transfer tokens to a specific user. Supports both identity with privacy (an empty\n identifier and 0 minAttestations) and without (with identifier and minAttestations).\n Sets trustedIssuers to the issuers listed in `defaultTrustedIssuers`.\n (To override this and set custom trusted issuers, use `transferWithTrustedIssuers`.)\n@param identifier The hashed identifier of a user to transfer to.\n@param token The token to be transferred.\n@param value The amount to be transferred.\n@param expirySeconds The number of seconds before the sender can revoke the payment.\n@param paymentId The address of the temporary wallet associated with this payment. Users must\n prove ownership of the corresponding private key to withdraw from escrow.\n@param minAttestations The min number of attestations required to withdraw the payment.\n@return True if transfer succeeded.\n@dev Throws if 'token' or 'value' is 0.\n@dev Throws if identifier is null and minAttestations > 0.\n@dev If minAttestations is 0, trustedIssuers will be set to empty list.\n@dev msg.sender needs to have already approved this contract to transfer",
+ "id": 32935,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 32906,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 32905,
+ "name": "nonReentrant",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 9484,
+ "src": "7200:12:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "7200:12:95"
+ }
+ ],
+ "name": "transfer",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 32904,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 32893,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 32935,
+ "src": "7051:18:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 32892,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "7051:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32895,
+ "name": "token",
+ "nodeType": "VariableDeclaration",
+ "scope": 32935,
+ "src": "7075:13:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32894,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "7075:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32897,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 32935,
+ "src": "7094:13:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32896,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "7094:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32899,
+ "name": "expirySeconds",
+ "nodeType": "VariableDeclaration",
+ "scope": 32935,
+ "src": "7113:21:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32898,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "7113:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32901,
+ "name": "paymentId",
+ "nodeType": "VariableDeclaration",
+ "scope": 32935,
+ "src": "7140:17:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32900,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "7140:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32903,
+ "name": "minAttestations",
+ "nodeType": "VariableDeclaration",
+ "scope": 32935,
+ "src": "7163:23:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32902,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "7163:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "7045:145:95"
+ },
+ "returnParameters": {
+ "id": 32909,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 32908,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 32935,
+ "src": "7222:4:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 32907,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "7222:4:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "7221:6:95"
+ },
+ "scope": 33717,
+ "src": "7028:569:95",
+ "stateMutability": "nonpayable",
+ "superFunction": 35943,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 32967,
+ "nodeType": "Block",
+ "src": "9080:182:95",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 32958,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32937,
+ "src": "9118:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 32959,
+ "name": "token",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32939,
+ "src": "9138:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 32960,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32941,
+ "src": "9153:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 32961,
+ "name": "expirySeconds",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32943,
+ "src": "9168:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 32962,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32945,
+ "src": "9191:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 32963,
+ "name": "minAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32947,
+ "src": "9210:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 32964,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32950,
+ "src": "9235:14:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ ],
+ "id": 32957,
+ "name": "_transfer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33602,
+ "src": "9099:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bool_$",
+ "typeString": "function (bytes32,address,uint256,uint256,address,uint256,address[] memory) returns (bool)"
+ }
+ },
+ "id": 32965,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9099:158:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 32956,
+ "id": 32966,
+ "nodeType": "Return",
+ "src": "9086:171:95"
+ }
+ ]
+ },
+ "documentation": "@notice Transfer tokens to a specific user. Supports both identity with privacy (an empty\n identifier and 0 minAttestations) and without (with identifier\n and attestations completed by trustedIssuers).\n@param identifier The hashed identifier of a user to transfer to.\n@param token The token to be transferred.\n@param value The amount to be transferred.\n@param expirySeconds The number of seconds before the sender can revoke the payment.\n@param paymentId The address of the temporary wallet associated with this payment. Users must\n prove ownership of the corresponding private key to withdraw from escrow.\n@param minAttestations The min number of attestations required to withdraw the payment.\n@param trustedIssuers Array of issuers whose attestations in FederatedAttestations.sol\n will be accepted to prove ownership over an identifier.\n@return True if transfer succeeded.\n@dev Throws if 'token' or 'value' is 0.\n@dev Throws if identifier is null and minAttestations > 0.\n@dev Throws if minAttestations == 0 but trustedIssuers are provided.\n@dev msg.sender needs to have already approved this contract to transfer.",
+ "id": 32968,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 32953,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 32952,
+ "name": "nonReentrant",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 9484,
+ "src": "9052:12:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "9052:12:95"
+ }
+ ],
+ "name": "transferWithTrustedIssuers",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 32951,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 32937,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 32968,
+ "src": "8864:18:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 32936,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "8864:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32939,
+ "name": "token",
+ "nodeType": "VariableDeclaration",
+ "scope": 32968,
+ "src": "8888:13:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32938,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "8888:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32941,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 32968,
+ "src": "8907:13:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32940,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "8907:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32943,
+ "name": "expirySeconds",
+ "nodeType": "VariableDeclaration",
+ "scope": 32968,
+ "src": "8926:21:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32942,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "8926:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32945,
+ "name": "paymentId",
+ "nodeType": "VariableDeclaration",
+ "scope": 32968,
+ "src": "8953:17:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32944,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "8953:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32947,
+ "name": "minAttestations",
+ "nodeType": "VariableDeclaration",
+ "scope": 32968,
+ "src": "8976:23:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 32946,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "8976:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32950,
+ "name": "trustedIssuers",
+ "nodeType": "VariableDeclaration",
+ "scope": 32968,
+ "src": "9005:33:95",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 32948,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "9005:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 32949,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "9005:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "8858:184:95"
+ },
+ "returnParameters": {
+ "id": 32956,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 32955,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 32968,
+ "src": "9074:4:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 32954,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "9074:4:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "9073:6:95"
+ },
+ "scope": 33717,
+ "src": "8823:439:95",
+ "stateMutability": "nonpayable",
+ "superFunction": 35963,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 33121,
+ "nodeType": "Block",
+ "src": "9871:1817:95",
+ "statements": [
+ {
+ "assignments": [
+ 32984
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 32984,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 33121,
+ "src": "9877:14:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32983,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "9877:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 32993,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 32987,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "9924:3:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 32988,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "9924:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 32989,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32972,
+ "src": "9936:1:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 32990,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32974,
+ "src": "9939:1:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 32991,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32976,
+ "src": "9942:1:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 32985,
+ "name": "Signatures",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6902,
+ "src": "9894:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Signatures_$6902_$",
+ "typeString": "type(library Signatures)"
+ }
+ },
+ "id": 32986,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getSignerOfAddress",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 6810,
+ "src": "9894:29:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_delegatecall_pure$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (address,uint8,bytes32,bytes32) pure returns (address)"
+ }
+ },
+ "id": 32992,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9894:50:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "9877:67:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 32997,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 32995,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32984,
+ "src": "9958:6:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 32996,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32970,
+ "src": "9968:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "9958:19:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4661696c656420746f2070726f7665206f776e657273686970206f6620746865207769746864726177206b6579",
+ "id": 32998,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "9979:47:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_c45a0adec54dfeafd951d08bde16e02838fb6a401a9b327d712b03984a29ae90",
+ "typeString": "literal_string \"Failed to prove ownership of the withdraw key\""
+ },
+ "value": "Failed to prove ownership of the withdraw key"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_c45a0adec54dfeafd951d08bde16e02838fb6a401a9b327d712b03984a29ae90",
+ "typeString": "literal_string \"Failed to prove ownership of the withdraw key\""
+ }
+ ],
+ "id": 32994,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "9950:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 32999,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9950:77:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33000,
+ "nodeType": "ExpressionStatement",
+ "src": "9950:77:95"
+ },
+ {
+ "assignments": [
+ 33002
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 33002,
+ "name": "payment",
+ "nodeType": "VariableDeclaration",
+ "scope": 33121,
+ "src": "10033:30:95",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 33001,
+ "name": "EscrowedPayment",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 32707,
+ "src": "10033:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 33006,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33003,
+ "name": "escrowedPayments",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32711,
+ "src": "10066:16:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_EscrowedPayment_$32707_storage_$",
+ "typeString": "mapping(address => struct Escrow.EscrowedPayment storage ref)"
+ }
+ },
+ "id": 33005,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 33004,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32970,
+ "src": "10083:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "10066:27:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage",
+ "typeString": "struct Escrow.EscrowedPayment storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "10033:60:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 33018,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 33013,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33008,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33002,
+ "src": "10107:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33009,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "token",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32694,
+ "src": "10107:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 33011,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10132:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 33010,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "10124:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 33012,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10124:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "10107:27:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33017,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33014,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33002,
+ "src": "10138:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33015,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32696,
+ "src": "10138:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 33016,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10154:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "10138:17:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "10107:48:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "496e76616c69642077697468647261772076616c75652e",
+ "id": 33019,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10157:25:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_11809aee4fa481cc45449f7b434e31fef3c1eb88a8e5ddd898d29492d3ebb4ad",
+ "typeString": "literal_string \"Invalid withdraw value.\""
+ },
+ "value": "Invalid withdraw value."
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_11809aee4fa481cc45449f7b434e31fef3c1eb88a8e5ddd898d29492d3ebb4ad",
+ "typeString": "literal_string \"Invalid withdraw value.\""
+ }
+ ],
+ "id": 33007,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "10099:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 33020,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10099:84:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33021,
+ "nodeType": "ExpressionStatement",
+ "src": "10099:84:95"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33025,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33022,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33002,
+ "src": "10375:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33023,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "minAttestations",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32706,
+ "src": "10375:23:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 33024,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10401:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "10375:27:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 33091,
+ "nodeType": "IfStatement",
+ "src": "10371:1057:95",
+ "trueBody": {
+ "id": 33090,
+ "nodeType": "Block",
+ "src": "10404:1024:95",
+ "statements": [
+ {
+ "assignments": [
+ 33027
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 33027,
+ "name": "passedCheck",
+ "nodeType": "VariableDeclaration",
+ "scope": 33090,
+ "src": "10412:16:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 33026,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "10412:4:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 33029,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "66616c7365",
+ "id": 33028,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10431:5:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "false"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "10412:24:95"
+ },
+ {
+ "assignments": [
+ 33033
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 33033,
+ "name": "trustedIssuers",
+ "nodeType": "VariableDeclaration",
+ "scope": 33090,
+ "src": "10444:31:95",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 33031,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "10444:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 33032,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "10444:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 33037,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33034,
+ "name": "trustedIssuersPerPayment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32726,
+ "src": "10478:24:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
+ "typeString": "mapping(address => address[] storage ref)"
+ }
+ },
+ "id": 33036,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 33035,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32970,
+ "src": "10503:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "10478:35:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "10444:69:95"
+ },
+ {
+ "assignments": [
+ 33039
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 33039,
+ "name": "attestationsAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 33090,
+ "src": "10521:27:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33038,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "10521:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 33044,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33042,
+ "name": "ATTESTATIONS_REGISTRY_ID",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8341,
+ "src": "10587:24:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 33040,
+ "name": "registryContract",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8325,
+ "src": "10551:16:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IRegistry_$9281",
+ "typeString": "contract IRegistry"
+ }
+ },
+ "id": 33041,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getAddressForOrDie",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 9249,
+ "src": "10551:35:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (bytes32) view external returns (address)"
+ }
+ },
+ "id": 33043,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10551:61:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "10521:91:95"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33048,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33045,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33033,
+ "src": "10625:14:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "id": 33046,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10625:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 33047,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10649:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "10625:25:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "id": 33083,
+ "nodeType": "Block",
+ "src": "11014:274:95",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33081,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 33071,
+ "name": "passedCheck",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33027,
+ "src": "11102:11:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33073,
+ "name": "attestationsAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33039,
+ "src": "11154:19:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33074,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33002,
+ "src": "11185:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33075,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "recipientIdentifier",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32690,
+ "src": "11185:27:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33076,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "11224:3:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 33077,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11224:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33078,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33002,
+ "src": "11246:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33079,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "minAttestations",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32706,
+ "src": "11246:23:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 33072,
+ "name": "hasCompletedV1Attestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33272,
+ "src": "11116:26:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (address,bytes32,address,uint256) view returns (bool)"
+ }
+ },
+ "id": 33080,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11116:163:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "11102:177:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 33082,
+ "nodeType": "ExpressionStatement",
+ "src": "11102:177:95"
+ }
+ ]
+ },
+ "id": 33084,
+ "nodeType": "IfStatement",
+ "src": "10621:667:95",
+ "trueBody": {
+ "id": 33070,
+ "nodeType": "Block",
+ "src": "10652:356:95",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33068,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 33049,
+ "name": "passedCheck",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33027,
+ "src": "10662:11:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 33067,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33051,
+ "name": "attestationsAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33039,
+ "src": "10741:19:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33052,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33002,
+ "src": "10774:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33053,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "recipientIdentifier",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32690,
+ "src": "10774:27:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33054,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "10815:3:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 33055,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10815:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33056,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33002,
+ "src": "10839:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33057,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "minAttestations",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32706,
+ "src": "10839:23:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33058,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33033,
+ "src": "10876:14:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ ],
+ "id": 33050,
+ "name": "hasCompletedV1AttestationsAsTrustedIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33323,
+ "src": "10686:41:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bool_$",
+ "typeString": "function (address,bytes32,address,uint256,address[] memory) view returns (bool)"
+ }
+ },
+ "id": 33059,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10686:216:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33061,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33002,
+ "src": "10943:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33062,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "recipientIdentifier",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32690,
+ "src": "10943:27:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33063,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "10972:3:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 33064,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10972:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33065,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33033,
+ "src": "10984:14:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ ],
+ "id": 33060,
+ "name": "hasCompletedV2Attestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33379,
+ "src": "10916:26:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_bool_$",
+ "typeString": "function (bytes32,address,address[] memory) view returns (bool)"
+ }
+ },
+ "id": 33066,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10916:83:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "10686:313:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "10662:337:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 33069,
+ "nodeType": "ExpressionStatement",
+ "src": "10662:337:95"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33086,
+ "name": "passedCheck",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33027,
+ "src": "11312:11:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "54686973206163636f756e7420646f6573206e6f74206861766520746865207265717569726564206174746573746174696f6e7320746f2077697468647261772074686973207061796d656e742e",
+ "id": 33087,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11333:80:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_ece38e5e23a6d8816b3fc51a2d1cacee649750d4b5f0e5a24bd23dbaab4e6eb9",
+ "typeString": "literal_string \"This account does not have the required attestations to withdraw this payment.\""
+ },
+ "value": "This account does not have the required attestations to withdraw this payment."
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_ece38e5e23a6d8816b3fc51a2d1cacee649750d4b5f0e5a24bd23dbaab4e6eb9",
+ "typeString": "literal_string \"This account does not have the required attestations to withdraw this payment.\""
+ }
+ ],
+ "id": 33085,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "11295:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 33088,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11295:126:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33089,
+ "nodeType": "ExpressionStatement",
+ "src": "11295:126:95"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33093,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32970,
+ "src": "11448:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 33092,
+ "name": "deletePayment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33716,
+ "src": "11434:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 33094,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11434:24:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33095,
+ "nodeType": "ExpressionStatement",
+ "src": "11434:24:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33101,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "11499:3:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 33102,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11499:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33103,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33002,
+ "src": "11511:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33104,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32696,
+ "src": "11511:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33097,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33002,
+ "src": "11471:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33098,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "token",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32694,
+ "src": "11471:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 33096,
+ "name": "ERC20",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 886,
+ "src": "11465:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_ERC20_$886_$",
+ "typeString": "type(contract ERC20)"
+ }
+ },
+ "id": 33099,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11465:20:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_ERC20_$886",
+ "typeString": "contract ERC20"
+ }
+ },
+ "id": 33100,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "safeTransfer",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 988,
+ "src": "11465:33:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$955_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$955_$",
+ "typeString": "function (contract IERC20,address,uint256)"
+ }
+ },
+ "id": 33105,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11465:60:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33106,
+ "nodeType": "ExpressionStatement",
+ "src": "11465:60:95"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33108,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33002,
+ "src": "11555:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33109,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "recipientIdentifier",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32690,
+ "src": "11555:27:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33110,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "11590:3:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 33111,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11590:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33112,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33002,
+ "src": "11608:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33113,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "token",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32694,
+ "src": "11608:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33114,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33002,
+ "src": "11629:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33115,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32696,
+ "src": "11629:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33116,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32970,
+ "src": "11650:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 33107,
+ "name": "Withdrawal",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32676,
+ "src": "11537:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$__$",
+ "typeString": "function (bytes32,address,address,uint256,address)"
+ }
+ },
+ "id": 33117,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11537:128:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33118,
+ "nodeType": "EmitStatement",
+ "src": "11532:133:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 33119,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11679:4:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 32982,
+ "id": 33120,
+ "nodeType": "Return",
+ "src": "11672:11:95"
+ }
+ ]
+ },
+ "documentation": "@notice Withdraws tokens for a verified user.\n@param paymentId The ID for the EscrowedPayment struct that contains all relevant information.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@return True if withdraw succeeded.\n@dev Throws if 'token' or 'value' is 0.\n@dev Throws if msg.sender does not prove ownership of the withdraw key.",
+ "id": 33122,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 32979,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 32978,
+ "name": "nonReentrant",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 9484,
+ "src": "9837:12:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "9837:12:95"
+ }
+ ],
+ "name": "withdraw",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 32977,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 32970,
+ "name": "paymentId",
+ "nodeType": "VariableDeclaration",
+ "scope": 33122,
+ "src": "9770:17:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 32969,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "9770:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32972,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 33122,
+ "src": "9789:7:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 32971,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "9789:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32974,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 33122,
+ "src": "9798:9:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 32973,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "9798:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 32976,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 33122,
+ "src": "9809:9:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 32975,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "9809:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "9769:50:95"
+ },
+ "returnParameters": {
+ "id": 32982,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 32981,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 33122,
+ "src": "9863:4:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 32980,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "9863:4:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "9862:6:95"
+ },
+ "scope": 33717,
+ "src": "9752:1936:95",
+ "stateMutability": "nonpayable",
+ "superFunction": 35976,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 33188,
+ "nodeType": "Block",
+ "src": "12123:564:95",
+ "statements": [
+ {
+ "assignments": [
+ 33132
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 33132,
+ "name": "payment",
+ "nodeType": "VariableDeclaration",
+ "scope": 33188,
+ "src": "12129:30:95",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 33131,
+ "name": "EscrowedPayment",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 32707,
+ "src": "12129:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 33136,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33133,
+ "name": "escrowedPayments",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32711,
+ "src": "12162:16:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_EscrowedPayment_$32707_storage_$",
+ "typeString": "mapping(address => struct Escrow.EscrowedPayment storage ref)"
+ }
+ },
+ "id": 33135,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 33134,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33124,
+ "src": "12179:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12162:27:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage",
+ "typeString": "struct Escrow.EscrowedPayment storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "12129:60:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 33142,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33138,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33132,
+ "src": "12203:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33139,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32692,
+ "src": "12203:14:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33140,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "12221:3:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 33141,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "12221:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "12203:28:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4f6e6c792073656e646572206f66207061796d656e742063616e20617474656d707420746f207265766f6b65207061796d656e742e",
+ "id": 33143,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "12233:55:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_fc802dcb9394f17c341cd1e1408421eb638a5987dce53c143798e997aa690c52",
+ "typeString": "literal_string \"Only sender of payment can attempt to revoke payment.\""
+ },
+ "value": "Only sender of payment can attempt to revoke payment."
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_fc802dcb9394f17c341cd1e1408421eb638a5987dce53c143798e997aa690c52",
+ "typeString": "literal_string \"Only sender of payment can attempt to revoke payment.\""
+ }
+ ],
+ "id": 33137,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "12195:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 33144,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12195:94:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33145,
+ "nodeType": "ExpressionStatement",
+ "src": "12195:94:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33155,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 33147,
+ "name": "now",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42908,
+ "src": "12310:3:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33151,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33132,
+ "src": "12340:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33152,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "expirySeconds",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32704,
+ "src": "12340:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33148,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33132,
+ "src": "12318:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33149,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "timestamp",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32702,
+ "src": "12318:17:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 33150,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "12318:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 33153,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12318:44:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 33154,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "12317:46:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "12310:53:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "5472616e73616374696f6e206e6f742072656465656d61626c6520666f722073656e646572207965742e",
+ "id": 33156,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "12371:44:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3dce0518bbb3ef203cda7f1502349e18e2a460bd7dffbaae8e384fa054c55ccf",
+ "typeString": "literal_string \"Transaction not redeemable for sender yet.\""
+ },
+ "value": "Transaction not redeemable for sender yet."
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3dce0518bbb3ef203cda7f1502349e18e2a460bd7dffbaae8e384fa054c55ccf",
+ "typeString": "literal_string \"Transaction not redeemable for sender yet.\""
+ }
+ ],
+ "id": 33146,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "12295:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 33157,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12295:126:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33158,
+ "nodeType": "ExpressionStatement",
+ "src": "12295:126:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33160,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33124,
+ "src": "12442:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 33159,
+ "name": "deletePayment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33716,
+ "src": "12428:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 33161,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12428:24:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33162,
+ "nodeType": "ExpressionStatement",
+ "src": "12428:24:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33168,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "12493:3:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 33169,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "12493:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33170,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33132,
+ "src": "12505:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33171,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32696,
+ "src": "12505:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33164,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33132,
+ "src": "12465:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33165,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "token",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32694,
+ "src": "12465:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 33163,
+ "name": "ERC20",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 886,
+ "src": "12459:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_ERC20_$886_$",
+ "typeString": "type(contract ERC20)"
+ }
+ },
+ "id": 33166,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12459:20:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_ERC20_$886",
+ "typeString": "contract ERC20"
+ }
+ },
+ "id": 33167,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "safeTransfer",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 988,
+ "src": "12459:33:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$955_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$955_$",
+ "typeString": "function (contract IERC20,address,uint256)"
+ }
+ },
+ "id": 33172,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12459:60:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33173,
+ "nodeType": "ExpressionStatement",
+ "src": "12459:60:95"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33175,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33132,
+ "src": "12549:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33176,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "recipientIdentifier",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32690,
+ "src": "12549:27:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33177,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33132,
+ "src": "12584:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33178,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32692,
+ "src": "12584:14:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33179,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33132,
+ "src": "12606:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33180,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "token",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32694,
+ "src": "12606:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33181,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33132,
+ "src": "12627:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_memory_ptr",
+ "typeString": "struct Escrow.EscrowedPayment memory"
+ }
+ },
+ "id": 33182,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32696,
+ "src": "12627:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33183,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33124,
+ "src": "12648:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 33174,
+ "name": "Revocation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32688,
+ "src": "12531:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$__$",
+ "typeString": "function (bytes32,address,address,uint256,address)"
+ }
+ },
+ "id": 33184,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12531:132:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33185,
+ "nodeType": "EmitStatement",
+ "src": "12526:137:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 33186,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "12677:4:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 33130,
+ "id": 33187,
+ "nodeType": "Return",
+ "src": "12670:11:95"
+ }
+ ]
+ },
+ "documentation": "@notice Revokes tokens for a sender who is redeeming a payment after it has expired.\n@param paymentId The ID for the EscrowedPayment struct that contains all relevant information.\n@dev Throws if 'token' or 'value' is 0.\n@dev Throws if msg.sender is not the sender of payment.\n@dev Throws if redeem time hasn't been reached yet.",
+ "id": 33189,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 33127,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 33126,
+ "name": "nonReentrant",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 9484,
+ "src": "12095:12:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "12095:12:95"
+ }
+ ],
+ "name": "revoke",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 33125,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33124,
+ "name": "paymentId",
+ "nodeType": "VariableDeclaration",
+ "scope": 33189,
+ "src": "12067:17:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33123,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "12067:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "12066:19:95"
+ },
+ "returnParameters": {
+ "id": 33130,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33129,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 33189,
+ "src": "12117:4:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 33128,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "12117:4:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "12116:6:95"
+ },
+ "scope": 33717,
+ "src": "12051:636:95",
+ "stateMutability": "nonpayable",
+ "superFunction": 35983,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 33201,
+ "nodeType": "Block",
+ "src": "13074:48:95",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33197,
+ "name": "receivedPaymentIds",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32716,
+ "src": "13087:18:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
+ "typeString": "mapping(bytes32 => address[] storage ref)"
+ }
+ },
+ "id": 33199,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 33198,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33191,
+ "src": "13106:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "13087:30:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "functionReturnParameters": 33196,
+ "id": 33200,
+ "nodeType": "Return",
+ "src": "13080:37:95"
+ }
+ ]
+ },
+ "documentation": "@notice Gets array of all Escrowed Payments received by identifier.\n@param identifier The hash of an identifier of the receiver of the escrowed payment.\n@return An array containing all the IDs of the Escrowed Payments that were received\nby the specified receiver.",
+ "id": 33202,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getReceivedPaymentIds",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 33192,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33191,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 33202,
+ "src": "13013:18:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 33190,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "13013:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "13012:20:95"
+ },
+ "returnParameters": {
+ "id": 33196,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33195,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 33202,
+ "src": "13056:16:95",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 33193,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "13056:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 33194,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "13056:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "13055:18:95"
+ },
+ "scope": 33717,
+ "src": "12982:140:95",
+ "stateMutability": "view",
+ "superFunction": 35991,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 33214,
+ "nodeType": "Block",
+ "src": "13471:40:95",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33210,
+ "name": "sentPaymentIds",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32721,
+ "src": "13484:14:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
+ "typeString": "mapping(address => address[] storage ref)"
+ }
+ },
+ "id": 33212,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 33211,
+ "name": "sender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33204,
+ "src": "13499:6:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "13484:22:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "functionReturnParameters": 33209,
+ "id": 33213,
+ "nodeType": "Return",
+ "src": "13477:29:95"
+ }
+ ]
+ },
+ "documentation": "@notice Gets array of all Escrowed Payment IDs sent by sender.\n@param sender The address of the sender of the escrowed payments.\n@return An array containing all the IDs of the Escrowed Payments that were sent by the\nspecified sender.",
+ "id": 33215,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getSentPaymentIds",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 33205,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33204,
+ "name": "sender",
+ "nodeType": "VariableDeclaration",
+ "scope": 33215,
+ "src": "13414:14:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33203,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "13414:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "13413:16:95"
+ },
+ "returnParameters": {
+ "id": 33209,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33208,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 33215,
+ "src": "13453:16:95",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 33206,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "13453:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 33207,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "13453:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "13452:18:95"
+ },
+ "scope": 33717,
+ "src": "13387:124:95",
+ "stateMutability": "view",
+ "superFunction": 35999,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 33227,
+ "nodeType": "Block",
+ "src": "13821:53:95",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33223,
+ "name": "trustedIssuersPerPayment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32726,
+ "src": "13834:24:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
+ "typeString": "mapping(address => address[] storage ref)"
+ }
+ },
+ "id": 33225,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 33224,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33217,
+ "src": "13859:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "13834:35:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "functionReturnParameters": 33222,
+ "id": 33226,
+ "nodeType": "Return",
+ "src": "13827:42:95"
+ }
+ ]
+ },
+ "documentation": "@notice Gets array of all trusted issuers set per paymentId.\n@param paymentId The ID of the payment to get.\n@return An array of addresses of trusted issuers set for an escrowed payment.",
+ "id": 33228,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getTrustedIssuersPerPayment",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 33218,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33217,
+ "name": "paymentId",
+ "nodeType": "VariableDeclaration",
+ "scope": 33228,
+ "src": "13761:17:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33216,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "13761:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "13760:19:95"
+ },
+ "returnParameters": {
+ "id": 33222,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33221,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 33228,
+ "src": "13803:16:95",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 33219,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "13803:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 33220,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "13803:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "13802:18:95"
+ },
+ "scope": 33717,
+ "src": "13724:150:95",
+ "stateMutability": "view",
+ "superFunction": 36007,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 33236,
+ "nodeType": "Block",
+ "src": "14103:39:95",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33234,
+ "name": "defaultTrustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32729,
+ "src": "14116:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "functionReturnParameters": 33233,
+ "id": 33235,
+ "nodeType": "Return",
+ "src": "14109:28:95"
+ }
+ ]
+ },
+ "documentation": "@notice Gets trusted issuers set as default for payments by `transfer` function.\n@return An array of addresses of trusted issuers.",
+ "id": 33237,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getDefaultTrustedIssuers",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 33229,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "14061:2:95"
+ },
+ "returnParameters": {
+ "id": 33233,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33232,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 33237,
+ "src": "14085:16:95",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 33230,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "14085:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 33231,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "14085:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "14084:18:95"
+ },
+ "scope": 33717,
+ "src": "14028:114:95",
+ "stateMutability": "view",
+ "superFunction": 36013,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 33271,
+ "nodeType": "Block",
+ "src": "14846:232:95",
+ "statements": [
+ {
+ "assignments": [
+ 33251
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 33251,
+ "name": "attestations",
+ "nodeType": "VariableDeclaration",
+ "scope": 33271,
+ "src": "14852:26:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IAttestations_$35924",
+ "typeString": "contract IAttestations"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 33250,
+ "name": "IAttestations",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 35924,
+ "src": "14852:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IAttestations_$35924",
+ "typeString": "contract IAttestations"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 33255,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33253,
+ "name": "attestationsAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33239,
+ "src": "14895:19:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 33252,
+ "name": "IAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 35924,
+ "src": "14881:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_IAttestations_$35924_$",
+ "typeString": "type(contract IAttestations)"
+ }
+ },
+ "id": 33254,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14881:34:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IAttestations_$35924",
+ "typeString": "contract IAttestations"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "14852:63:95"
+ },
+ {
+ "assignments": [
+ 33257,
+ null
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 33257,
+ "name": "completedAttestations",
+ "nodeType": "VariableDeclaration",
+ "scope": 33271,
+ "src": "14922:28:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ "typeName": {
+ "id": 33256,
+ "name": "uint64",
+ "nodeType": "ElementaryTypeName",
+ "src": "14922:6:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ null
+ ],
+ "id": 33263,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33260,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33241,
+ "src": "14989:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33261,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33243,
+ "src": "15001:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 33258,
+ "name": "attestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33251,
+ "src": "14956:12:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IAttestations_$35924",
+ "typeString": "contract IAttestations"
+ }
+ },
+ "id": 33259,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getAttestationStats",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 35806,
+ "src": "14956:32:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_address_$returns$_t_uint32_$_t_uint32_$",
+ "typeString": "function (bytes32,address) view external returns (uint32,uint32)"
+ }
+ },
+ "id": 33262,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14956:53:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_uint32_$_t_uint32_$",
+ "typeString": "tuple(uint32,uint32)"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "14921:88:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33268,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33265,
+ "name": "completedAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33257,
+ "src": "15031:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ ],
+ "id": 33264,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "15023:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint256_$",
+ "typeString": "type(uint256)"
+ },
+ "typeName": "uint256"
+ },
+ "id": 33266,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15023:30:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 33267,
+ "name": "minAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33245,
+ "src": "15057:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "15023:49:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 33269,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "15022:51:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 33249,
+ "id": 33270,
+ "nodeType": "Return",
+ "src": "15015:58:95"
+ }
+ ]
+ },
+ "documentation": "@notice Checks if account has completed minAttestations for identifier in Attestations.sol.\n@param attestationsAddress The address of Attestations.sol.\n@param identifier The hash of an identifier for which to look up attestations.\n@param account The account for which to look up attestations.\n@param minAttestations The minimum number of attestations to have completed.\n@return Whether or not attestations in Attestations.sol\n exceeds minAttestations for (identifier, account).",
+ "id": 33272,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "hasCompletedV1Attestations",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 33246,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33239,
+ "name": "attestationsAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 33272,
+ "src": "14711:27:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33238,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "14711:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33241,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 33272,
+ "src": "14744:18:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 33240,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "14744:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33243,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 33272,
+ "src": "14768:15:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33242,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "14768:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33245,
+ "name": "minAttestations",
+ "nodeType": "VariableDeclaration",
+ "scope": 33272,
+ "src": "14789:23:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 33244,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "14789:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "14705:111:95"
+ },
+ "returnParameters": {
+ "id": 33249,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33248,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 33272,
+ "src": "14840:4:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 33247,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "14840:4:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "14839:6:95"
+ },
+ "scope": 33717,
+ "src": "14670:408:95",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 33322,
+ "nodeType": "Block",
+ "src": "16003:373:95",
+ "statements": [
+ {
+ "body": {
+ "id": 33318,
+ "nodeType": "Block",
+ "src": "16070:284:95",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 33307,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33303,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33283,
+ "src": "16082:14:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "id": 33305,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 33304,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33289,
+ "src": "16097:1:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "16082:17:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 33306,
+ "name": "attestationsAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33274,
+ "src": "16103:19:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "16082:40:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 33310,
+ "nodeType": "IfStatement",
+ "src": "16078:73:95",
+ "trueBody": {
+ "id": 33309,
+ "nodeType": "Block",
+ "src": "16124:27:95",
+ "statements": [
+ {
+ "id": 33308,
+ "nodeType": "Continue",
+ "src": "16134:8:95"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33312,
+ "name": "attestationsAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33274,
+ "src": "16289:19:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33313,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33276,
+ "src": "16310:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33314,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33278,
+ "src": "16322:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33315,
+ "name": "minAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33280,
+ "src": "16331:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 33311,
+ "name": "hasCompletedV1Attestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33272,
+ "src": "16262:26:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (address,bytes32,address,uint256) view returns (bool)"
+ }
+ },
+ "id": 33316,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16262:85:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 33287,
+ "id": 33317,
+ "nodeType": "Return",
+ "src": "16255:92:95"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33295,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 33292,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33289,
+ "src": "16029:1:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33293,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33283,
+ "src": "16033:14:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "id": 33294,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "16033:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "16029:25:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 33319,
+ "initializationExpression": {
+ "assignments": [
+ 33289
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 33289,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 33319,
+ "src": "16014:9:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 33288,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "16014:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 33291,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 33290,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "16026:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "16014:13:95"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33301,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 33296,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33289,
+ "src": "16056:1:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 33299,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "16066:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 33297,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33289,
+ "src": "16060:1:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 33298,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "16060:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 33300,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16060:8:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "16056:12:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 33302,
+ "nodeType": "ExpressionStatement",
+ "src": "16056:12:95"
+ },
+ "nodeType": "ForStatement",
+ "src": "16009:345:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "66616c7365",
+ "id": 33320,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "16366:5:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "false"
+ },
+ "functionReturnParameters": 33287,
+ "id": 33321,
+ "nodeType": "Return",
+ "src": "16359:12:95"
+ }
+ ]
+ },
+ "documentation": "@notice Helper function that checks if one of the trustedIssuers is the old Attestations.sol\n contract and applies the escrow V1 check against minAttestations.\n@param attestationsAddress The address of Attestations.sol.\n@param identifier The hash of an identifier for which to look up attestations.\n@param account The account for which to look up attestations.\n@param minAttestations The minimum number of attestations to have completed.\n@param trustedIssuers The trustedIssuer addresses to search through.\n@return Whether or not a trustedIssuer is Attestations.sol & attestations\n exceed minAttestations for (identifier, account).",
+ "id": 33323,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "hasCompletedV1AttestationsAsTrustedIssuer",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 33284,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33274,
+ "name": "attestationsAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 33323,
+ "src": "15831:27:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33273,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "15831:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33276,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 33323,
+ "src": "15864:18:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 33275,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "15864:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33278,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 33323,
+ "src": "15888:15:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33277,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "15888:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33280,
+ "name": "minAttestations",
+ "nodeType": "VariableDeclaration",
+ "scope": 33323,
+ "src": "15909:23:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 33279,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "15909:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33283,
+ "name": "trustedIssuers",
+ "nodeType": "VariableDeclaration",
+ "scope": 33323,
+ "src": "15938:31:95",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 33281,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "15938:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 33282,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "15938:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "15825:148:95"
+ },
+ "returnParameters": {
+ "id": 33287,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33286,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 33323,
+ "src": "15997:4:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 33285,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "15997:4:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "15996:6:95"
+ },
+ "scope": 33717,
+ "src": "15775:601:95",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 33378,
+ "nodeType": "Block",
+ "src": "17018:494:95",
+ "statements": [
+ {
+ "assignments": [
+ 33336
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 33336,
+ "name": "federatedAttestations",
+ "nodeType": "VariableDeclaration",
+ "scope": 33378,
+ "src": "17078:44:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IFederatedAttestations_$36153",
+ "typeString": "contract IFederatedAttestations"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 33335,
+ "name": "IFederatedAttestations",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 36153,
+ "src": "17078:22:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IFederatedAttestations_$36153",
+ "typeString": "contract IFederatedAttestations"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 33339,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 33337,
+ "name": "getFederatedAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8648,
+ "src": "17125:24:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IFederatedAttestations_$36153_$",
+ "typeString": "function () view returns (contract IFederatedAttestations)"
+ }
+ },
+ "id": 33338,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17125:26:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IFederatedAttestations_$36153",
+ "typeString": "contract IFederatedAttestations"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "17078:73:95"
+ },
+ {
+ "assignments": [
+ null,
+ 33343,
+ null,
+ null,
+ null
+ ],
+ "declarations": [
+ null,
+ {
+ "constant": false,
+ "id": 33343,
+ "name": "accounts",
+ "nodeType": "VariableDeclaration",
+ "scope": 33378,
+ "src": "17160:25:95",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 33341,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "17160:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 33342,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "17160:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ null,
+ null,
+ null
+ ],
+ "id": 33349,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33346,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33325,
+ "src": "17243:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33347,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33330,
+ "src": "17261:14:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 33344,
+ "name": "federatedAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33336,
+ "src": "17195:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IFederatedAttestations_$36153",
+ "typeString": "contract IFederatedAttestations"
+ }
+ },
+ "id": 33345,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "lookupAttestations",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 36104,
+ "src": "17195:40:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_array$_t_uint64_$dyn_memory_ptr_$",
+ "typeString": "function (bytes32,address[] memory) view external returns (uint256[] memory,address[] memory,address[] memory,uint64[] memory,uint64[] memory)"
+ }
+ },
+ "id": 33348,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17195:86:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_array$_t_uint64_$dyn_memory_ptr_$",
+ "typeString": "tuple(uint256[] memory,address[] memory,address[] memory,uint64[] memory,uint64[] memory)"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "17157:124:95"
+ },
+ {
+ "body": {
+ "id": 33374,
+ "nodeType": "Block",
+ "src": "17418:72:95",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 33369,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33365,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33343,
+ "src": "17430:8:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "id": 33367,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 33366,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33351,
+ "src": "17439:1:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "17430:11:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 33368,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33327,
+ "src": "17445:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "17430:22:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 33373,
+ "nodeType": "IfStatement",
+ "src": "17426:58:95",
+ "trueBody": {
+ "id": 33372,
+ "nodeType": "Block",
+ "src": "17454:30:95",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 33370,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "17471:4:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 33334,
+ "id": 33371,
+ "nodeType": "Return",
+ "src": "17464:11:95"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33357,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 33354,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33351,
+ "src": "17383:1:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33355,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33343,
+ "src": "17387:8:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "id": 33356,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "17387:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "17383:19:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 33375,
+ "initializationExpression": {
+ "assignments": [
+ 33351
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 33351,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 33375,
+ "src": "17368:9:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 33350,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "17368:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 33353,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 33352,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "17380:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "17368:13:95"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33363,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 33358,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33351,
+ "src": "17404:1:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 33361,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "17414:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 33359,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33351,
+ "src": "17408:1:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 33360,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "17408:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 33362,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17408:8:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "17404:12:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 33364,
+ "nodeType": "ExpressionStatement",
+ "src": "17404:12:95"
+ },
+ "nodeType": "ForStatement",
+ "src": "17363:127:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "66616c7365",
+ "id": 33376,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "17502:5:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "false"
+ },
+ "functionReturnParameters": 33334,
+ "id": 33377,
+ "nodeType": "Return",
+ "src": "17495:12:95"
+ }
+ ]
+ },
+ "documentation": "@notice Checks if there are attestations for account <-> identifier from\n any of trustedIssuers in FederatedAttestations.sol.\n@param identifier The hash of an identifier for which to look up attestations.\n@param account The account for which to look up attestations.\n@param trustedIssuers Issuer addresses whose attestations to trust.\n@return Whether or not attestations exist in FederatedAttestations.sol\n for (identifier, account).",
+ "id": 33379,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "hasCompletedV2Attestations",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 33331,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33325,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 33379,
+ "src": "16908:18:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 33324,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "16908:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33327,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 33379,
+ "src": "16932:15:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33326,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "16932:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33330,
+ "name": "trustedIssuers",
+ "nodeType": "VariableDeclaration",
+ "scope": 33379,
+ "src": "16953:31:95",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 33328,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "16953:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 33329,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "16953:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "16902:86:95"
+ },
+ "returnParameters": {
+ "id": 33334,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33333,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 33379,
+ "src": "17012:4:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 33332,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "17012:4:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "17011:6:95"
+ },
+ "scope": 33717,
+ "src": "16867:645:95",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 33601,
+ "nodeType": "Block",
+ "src": "19010:2172:95",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 33412,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 33408,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 33404,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 33400,
+ "name": "token",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33383,
+ "src": "19024:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 33402,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "19041:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 33401,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "19033:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 33403,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19033:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "19024:19:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33407,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 33405,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33385,
+ "src": "19047:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 33406,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "19055:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "19047:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "19024:32:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33411,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 33409,
+ "name": "expirySeconds",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33387,
+ "src": "19060:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 33410,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "19076:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "19060:17:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "19024:53:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "496e76616c6964207472616e7366657220696e707574732e",
+ "id": 33413,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "19079:26:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_583aa275ae7ba8f6fa1167872cbe2d9795e424de512aa58b1047865cfae1e4c3",
+ "typeString": "literal_string \"Invalid transfer inputs.\""
+ },
+ "value": "Invalid transfer inputs."
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_583aa275ae7ba8f6fa1167872cbe2d9795e424de512aa58b1047865cfae1e4c3",
+ "typeString": "literal_string \"Invalid transfer inputs.\""
+ }
+ ],
+ "id": 33399,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "19016:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 33414,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19016:90:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33415,
+ "nodeType": "ExpressionStatement",
+ "src": "19016:90:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33425,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "!",
+ "prefix": true,
+ "src": "19127:41:95",
+ "subExpression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 33423,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 33419,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 33417,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33381,
+ "src": "19129:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 33418,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "19143:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "19129:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33422,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 33420,
+ "name": "minAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33391,
+ "src": "19148:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 33421,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "19166:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "19148:19:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "19129:38:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 33424,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "19128:40:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "496e76616c6964207072697661637920696e707574733a2043616e27742072657175697265206174746573746174696f6e73206966206e6f206964656e746966696572",
+ "id": 33426,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "19176:69:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_591a98fda7af4459f299901f71ecb60bd524599b68bd3d6e78a88580fbbaac67",
+ "typeString": "literal_string \"Invalid privacy inputs: Can't require attestations if no identifier\""
+ },
+ "value": "Invalid privacy inputs: Can't require attestations if no identifier"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_591a98fda7af4459f299901f71ecb60bd524599b68bd3d6e78a88580fbbaac67",
+ "typeString": "literal_string \"Invalid privacy inputs: Can't require attestations if no identifier\""
+ }
+ ],
+ "id": 33416,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "19112:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 33427,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19112:139:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33428,
+ "nodeType": "ExpressionStatement",
+ "src": "19112:139:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33439,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "!",
+ "prefix": true,
+ "src": "19515:52:95",
+ "subExpression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 33437,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33432,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 33430,
+ "name": "minAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33391,
+ "src": "19517:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 33431,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "19536:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "19517:20:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "&&",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33436,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33433,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33394,
+ "src": "19541:14:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "id": 33434,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "19541:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 33435,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "19565:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "19541:25:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "19517:49:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 33438,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "19516:51:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "7472757374656449737375657273206d6179206f6e6c7920626520736574207768656e206174746573746174696f6e7320617265207265717569726564",
+ "id": 33440,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "19575:63:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_dd56c1021d3ad1f72d3fe19e61cd2729a5a3858943bea47977ab8075f182d030",
+ "typeString": "literal_string \"trustedIssuers may only be set when attestations are required\""
+ },
+ "value": "trustedIssuers may only be set when attestations are required"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_dd56c1021d3ad1f72d3fe19e61cd2729a5a3858943bea47977ab8075f182d030",
+ "typeString": "literal_string \"trustedIssuers may only be set when attestations are required\""
+ }
+ ],
+ "id": 33429,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "19500:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 33441,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19500:144:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33442,
+ "nodeType": "ExpressionStatement",
+ "src": "19500:144:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33447,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33444,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33394,
+ "src": "19798:14:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "id": 33445,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "19798:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 33446,
+ "name": "MAX_TRUSTED_ISSUERS_PER_PAYMENT",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32732,
+ "src": "19823:31:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "19798:56:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "546f6f206d616e792074727573746564497373756572732070726f7669646564",
+ "id": 33448,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "19862:34:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_fdbe1943f226c4c9a0fb6a61992b3e2c525655ffd8bfed7ce5291460112a7920",
+ "typeString": "literal_string \"Too many trustedIssuers provided\""
+ },
+ "value": "Too many trustedIssuers provided"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_fdbe1943f226c4c9a0fb6a61992b3e2c525655ffd8bfed7ce5291460112a7920",
+ "typeString": "literal_string \"Too many trustedIssuers provided\""
+ }
+ ],
+ "id": 33443,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "19783:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 33449,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19783:119:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33450,
+ "nodeType": "ExpressionStatement",
+ "src": "19783:119:95"
+ },
+ {
+ "assignments": [
+ 33452
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 33452,
+ "name": "attestations",
+ "nodeType": "VariableDeclaration",
+ "scope": 33601,
+ "src": "19909:26:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IAttestations_$35924",
+ "typeString": "contract IAttestations"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 33451,
+ "name": "IAttestations",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 35924,
+ "src": "19909:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IAttestations_$35924",
+ "typeString": "contract IAttestations"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 33455,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 33453,
+ "name": "getAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8561,
+ "src": "19938:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IAttestations_$35924_$",
+ "typeString": "function () view returns (contract IAttestations)"
+ }
+ },
+ "id": 33454,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19938:17:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IAttestations_$35924",
+ "typeString": "contract IAttestations"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "19909:46:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33461,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 33457,
+ "name": "minAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33391,
+ "src": "19976:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "id": 33458,
+ "name": "attestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33452,
+ "src": "19995:12:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IAttestations_$35924",
+ "typeString": "contract IAttestations"
+ }
+ },
+ "id": 33459,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getMaxAttestations",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 35869,
+ "src": "19995:31:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
+ "typeString": "function () view external returns (uint256)"
+ }
+ },
+ "id": 33460,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19995:33:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "19976:52:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "6d696e4174746573746174696f6e73206c6172676572207468616e206c696d6974",
+ "id": 33462,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "20036:35:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_cd60604f4053d5b11b86362654f05f91294f55fae9a09ec791fba1339e4302ba",
+ "typeString": "literal_string \"minAttestations larger than limit\""
+ },
+ "value": "minAttestations larger than limit"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_cd60604f4053d5b11b86362654f05f91294f55fae9a09ec791fba1339e4302ba",
+ "typeString": "literal_string \"minAttestations larger than limit\""
+ }
+ ],
+ "id": 33456,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "19961:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 33463,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19961:116:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33464,
+ "nodeType": "ExpressionStatement",
+ "src": "19961:116:95"
+ },
+ {
+ "assignments": [
+ 33466
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 33466,
+ "name": "sentIndex",
+ "nodeType": "VariableDeclaration",
+ "scope": 33601,
+ "src": "20084:17:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 33465,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "20084:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 33477,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 33475,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "20151:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33472,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33389,
+ "src": "20136:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33467,
+ "name": "sentPaymentIds",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32721,
+ "src": "20104:14:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
+ "typeString": "mapping(address => address[] storage ref)"
+ }
+ },
+ "id": 33470,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33468,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "20119:3:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 33469,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "20119:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "20104:26:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "id": 33471,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "push",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "20104:31:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
+ "typeString": "function (address) returns (uint256)"
+ }
+ },
+ "id": 33473,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20104:42:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 33474,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 219,
+ "src": "20104:46:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 33476,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20104:49:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "20084:69:95"
+ },
+ {
+ "assignments": [
+ 33479
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 33479,
+ "name": "receivedIndex",
+ "nodeType": "VariableDeclaration",
+ "scope": 33601,
+ "src": "20159:21:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 33478,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "20159:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 33489,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 33487,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "20234:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33484,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33389,
+ "src": "20219:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33480,
+ "name": "receivedPaymentIds",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32716,
+ "src": "20183:18:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
+ "typeString": "mapping(bytes32 => address[] storage ref)"
+ }
+ },
+ "id": 33482,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 33481,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33381,
+ "src": "20202:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "20183:30:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "id": 33483,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "push",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "20183:35:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$",
+ "typeString": "function (address) returns (uint256)"
+ }
+ },
+ "id": 33485,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20183:46:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 33486,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 219,
+ "src": "20183:50:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 33488,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20183:53:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "20159:77:95"
+ },
+ {
+ "assignments": [
+ 33491
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 33491,
+ "name": "newPayment",
+ "nodeType": "VariableDeclaration",
+ "scope": 33601,
+ "src": "20243:34:95",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 33490,
+ "name": "EscrowedPayment",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 32707,
+ "src": "20243:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 33495,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33492,
+ "name": "escrowedPayments",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32711,
+ "src": "20280:16:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_EscrowedPayment_$32707_storage_$",
+ "typeString": "mapping(address => struct Escrow.EscrowedPayment storage ref)"
+ }
+ },
+ "id": 33494,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 33493,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33389,
+ "src": "20297:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "20280:27:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage",
+ "typeString": "struct Escrow.EscrowedPayment storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "20243:64:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33500,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33497,
+ "name": "newPayment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33491,
+ "src": "20321:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment storage pointer"
+ }
+ },
+ "id": 33498,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "timestamp",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32702,
+ "src": "20321:20:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 33499,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "20345:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "20321:25:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "7061796d656e74496420616c72656164792075736564",
+ "id": 33501,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "20348:24:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_1d10c10fff9c8431e2b33a8887376fcdc3728d68275e31a50c4acace0fdfe7b9",
+ "typeString": "literal_string \"paymentId already used\""
+ },
+ "value": "paymentId already used"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_1d10c10fff9c8431e2b33a8887376fcdc3728d68275e31a50c4acace0fdfe7b9",
+ "typeString": "literal_string \"paymentId already used\""
+ }
+ ],
+ "id": 33496,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "20313:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 33502,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20313:60:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33503,
+ "nodeType": "ExpressionStatement",
+ "src": "20313:60:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33508,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33504,
+ "name": "newPayment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33491,
+ "src": "20379:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment storage pointer"
+ }
+ },
+ "id": 33506,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "recipientIdentifier",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32690,
+ "src": "20379:30:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 33507,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33381,
+ "src": "20412:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "20379:43:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "id": 33509,
+ "nodeType": "ExpressionStatement",
+ "src": "20379:43:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33515,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33510,
+ "name": "newPayment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33491,
+ "src": "20428:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment storage pointer"
+ }
+ },
+ "id": 33512,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32692,
+ "src": "20428:17:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33513,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "20448:3:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 33514,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "20448:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "20428:30:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 33516,
+ "nodeType": "ExpressionStatement",
+ "src": "20428:30:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33521,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33517,
+ "name": "newPayment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33491,
+ "src": "20464:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment storage pointer"
+ }
+ },
+ "id": 33519,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "token",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32694,
+ "src": "20464:16:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 33520,
+ "name": "token",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33383,
+ "src": "20483:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "20464:24:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 33522,
+ "nodeType": "ExpressionStatement",
+ "src": "20464:24:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33527,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33523,
+ "name": "newPayment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33491,
+ "src": "20494:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment storage pointer"
+ }
+ },
+ "id": 33525,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "value",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32696,
+ "src": "20494:16:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 33526,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33385,
+ "src": "20513:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "20494:24:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 33528,
+ "nodeType": "ExpressionStatement",
+ "src": "20494:24:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33533,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33529,
+ "name": "newPayment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33491,
+ "src": "20524:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment storage pointer"
+ }
+ },
+ "id": 33531,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "sentIndex",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32698,
+ "src": "20524:20:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 33532,
+ "name": "sentIndex",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33466,
+ "src": "20547:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "20524:32:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 33534,
+ "nodeType": "ExpressionStatement",
+ "src": "20524:32:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33539,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33535,
+ "name": "newPayment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33491,
+ "src": "20562:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment storage pointer"
+ }
+ },
+ "id": 33537,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "receivedIndex",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32700,
+ "src": "20562:24:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 33538,
+ "name": "receivedIndex",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33479,
+ "src": "20589:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "20562:40:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 33540,
+ "nodeType": "ExpressionStatement",
+ "src": "20562:40:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33546,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33541,
+ "name": "newPayment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33491,
+ "src": "20608:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment storage pointer"
+ }
+ },
+ "id": 33543,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "timestamp",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32702,
+ "src": "20608:20:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33544,
+ "name": "block",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42896,
+ "src": "20631:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_block",
+ "typeString": "block"
+ }
+ },
+ "id": 33545,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "timestamp",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "20631:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "20608:38:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 33547,
+ "nodeType": "ExpressionStatement",
+ "src": "20608:38:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33552,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33548,
+ "name": "newPayment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33491,
+ "src": "20652:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment storage pointer"
+ }
+ },
+ "id": 33550,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "expirySeconds",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32704,
+ "src": "20652:24:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 33551,
+ "name": "expirySeconds",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33387,
+ "src": "20679:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "20652:40:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 33553,
+ "nodeType": "ExpressionStatement",
+ "src": "20652:40:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33558,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33554,
+ "name": "newPayment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33491,
+ "src": "20698:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment storage pointer"
+ }
+ },
+ "id": 33556,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "minAttestations",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32706,
+ "src": "20698:26:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 33557,
+ "name": "minAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33391,
+ "src": "20727:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "20698:44:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 33559,
+ "nodeType": "ExpressionStatement",
+ "src": "20698:44:95"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33563,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33560,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33394,
+ "src": "20792:14:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "id": 33561,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "20792:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 33562,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "20816:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "20792:25:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 33571,
+ "nodeType": "IfStatement",
+ "src": "20788:98:95",
+ "trueBody": {
+ "id": 33570,
+ "nodeType": "Block",
+ "src": "20819:67:95",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33568,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33564,
+ "name": "trustedIssuersPerPayment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32726,
+ "src": "20827:24:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
+ "typeString": "mapping(address => address[] storage ref)"
+ }
+ },
+ "id": 33566,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 33565,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33389,
+ "src": "20852:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "20827:35:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 33567,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33394,
+ "src": "20865:14:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "src": "20827:52:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "id": 33569,
+ "nodeType": "ExpressionStatement",
+ "src": "20827:52:95"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33576,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "20922:3:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 33577,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "20922:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33579,
+ "name": "this",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43126,
+ "src": "20942:4:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Escrow_$33717",
+ "typeString": "contract Escrow"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_contract$_Escrow_$33717",
+ "typeString": "contract Escrow"
+ }
+ ],
+ "id": 33578,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "20934:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 33580,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20934:13:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33581,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33385,
+ "src": "20949:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33573,
+ "name": "token",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33383,
+ "src": "20898:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 33572,
+ "name": "ERC20",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 886,
+ "src": "20892:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_ERC20_$886_$",
+ "typeString": "type(contract ERC20)"
+ }
+ },
+ "id": 33574,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20892:12:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_ERC20_$886",
+ "typeString": "contract ERC20"
+ }
+ },
+ "id": 33575,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "safeTransferFrom",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 1013,
+ "src": "20892:29:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$955_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$955_$",
+ "typeString": "function (contract IERC20,address,address,uint256)"
+ }
+ },
+ "id": 33582,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20892:63:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33583,
+ "nodeType": "ExpressionStatement",
+ "src": "20892:63:95"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33585,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "20975:3:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 33586,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "20975:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33587,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33381,
+ "src": "20987:10:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33588,
+ "name": "token",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33383,
+ "src": "20999:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33589,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33385,
+ "src": "21006:5:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33590,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33389,
+ "src": "21013:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33591,
+ "name": "minAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33391,
+ "src": "21024:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 33584,
+ "name": "Transfer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32653,
+ "src": "20966:8:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,bytes32,address,uint256,address,uint256)"
+ }
+ },
+ "id": 33592,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20966:74:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33593,
+ "nodeType": "EmitStatement",
+ "src": "20961:79:95"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33595,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33389,
+ "src": "21134:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33596,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33394,
+ "src": "21145:14:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ ],
+ "id": 33594,
+ "name": "TrustedIssuersSet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32660,
+ "src": "21116:17:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$",
+ "typeString": "function (address,address[] memory)"
+ }
+ },
+ "id": 33597,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21116:44:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33598,
+ "nodeType": "EmitStatement",
+ "src": "21111:49:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 33599,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "21173:4:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 33398,
+ "id": 33600,
+ "nodeType": "Return",
+ "src": "21166:11:95"
+ }
+ ]
+ },
+ "documentation": "@notice Helper function for `transferWithTrustedIssuers` and `transfer`, to\n enable backwards-compatible function signature for `transfer`,\n and since `transfer` cannot directly call `transferWithTrustedIssuers`\n due to reentrancy guard.\n@param identifier The hashed identifier of a user to transfer to.\n@param token The token to be transferred.\n@param value The amount to be transferred.\n@param expirySeconds The number of seconds before the sender can revoke the payment.\n@param paymentId The address of the temporary wallet associated with this payment. Users must\n prove ownership of the corresponding private key to withdraw from escrow.\n@param minAttestations The min number of attestations required to withdraw the payment.\n@param trustedIssuers Array of issuers whose attestations in FederatedAttestations.sol\n will be accepted to prove ownership over an identifier.\n@return True if transfer succeeded.\n@dev Throws if 'token' or 'value' is 0.\n@dev Throws if identifier is null and minAttestations > 0.\n@dev Throws if minAttestations == 0 but trustedIssuers are provided.\n@dev msg.sender needs to have already approved this contract to transfer.",
+ "id": 33602,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "_transfer",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 33395,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33381,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 33602,
+ "src": "18810:18:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 33380,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "18810:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33383,
+ "name": "token",
+ "nodeType": "VariableDeclaration",
+ "scope": 33602,
+ "src": "18834:13:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33382,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "18834:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33385,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 33602,
+ "src": "18853:13:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 33384,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "18853:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33387,
+ "name": "expirySeconds",
+ "nodeType": "VariableDeclaration",
+ "scope": 33602,
+ "src": "18872:21:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 33386,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "18872:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33389,
+ "name": "paymentId",
+ "nodeType": "VariableDeclaration",
+ "scope": 33602,
+ "src": "18899:17:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33388,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "18899:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33391,
+ "name": "minAttestations",
+ "nodeType": "VariableDeclaration",
+ "scope": 33602,
+ "src": "18922:23:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 33390,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "18922:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33394,
+ "name": "trustedIssuers",
+ "nodeType": "VariableDeclaration",
+ "scope": 33602,
+ "src": "18951:31:95",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 33392,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "18951:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 33393,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "18951:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "18804:182:95"
+ },
+ "returnParameters": {
+ "id": 33398,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33397,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 33602,
+ "src": "19004:4:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 33396,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "19004:4:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "19003:6:95"
+ },
+ "scope": 33717,
+ "src": "18786:2396:95",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "private"
+ },
+ {
+ "body": {
+ "id": 33715,
+ "nodeType": "Block",
+ "src": "21436:719:95",
+ "statements": [
+ {
+ "assignments": [
+ 33608
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 33608,
+ "name": "payment",
+ "nodeType": "VariableDeclaration",
+ "scope": 33715,
+ "src": "21442:31:95",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 33607,
+ "name": "EscrowedPayment",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 32707,
+ "src": "21442:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 33612,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33609,
+ "name": "escrowedPayments",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32711,
+ "src": "21476:16:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_EscrowedPayment_$32707_storage_$",
+ "typeString": "mapping(address => struct Escrow.EscrowedPayment storage ref)"
+ }
+ },
+ "id": 33611,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 33610,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33604,
+ "src": "21493:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "21476:27:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage",
+ "typeString": "struct Escrow.EscrowedPayment storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "21442:61:95"
+ },
+ {
+ "assignments": [
+ 33616
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 33616,
+ "name": "received",
+ "nodeType": "VariableDeclaration",
+ "scope": 33715,
+ "src": "21509:26:95",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 33614,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "21509:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 33615,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "21509:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 33621,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33617,
+ "name": "receivedPaymentIds",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32716,
+ "src": "21538:18:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_address_$dyn_storage_$",
+ "typeString": "mapping(bytes32 => address[] storage ref)"
+ }
+ },
+ "id": 33620,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33618,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33608,
+ "src": "21557:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment storage pointer"
+ }
+ },
+ "id": 33619,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "recipientIdentifier",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32690,
+ "src": "21557:27:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "21538:47:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "21509:76:95"
+ },
+ {
+ "assignments": [
+ 33625
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 33625,
+ "name": "sent",
+ "nodeType": "VariableDeclaration",
+ "scope": 33715,
+ "src": "21591:22:95",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 33623,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "21591:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 33624,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "21591:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 33630,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33626,
+ "name": "sentPaymentIds",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32721,
+ "src": "21616:14:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
+ "typeString": "mapping(address => address[] storage ref)"
+ }
+ },
+ "id": 33629,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33627,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33608,
+ "src": "21631:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment storage pointer"
+ }
+ },
+ "id": 33628,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32692,
+ "src": "21631:14:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "21616:30:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "21591:55:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33642,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33631,
+ "name": "escrowedPayments",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32711,
+ "src": "21653:16:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_EscrowedPayment_$32707_storage_$",
+ "typeString": "mapping(address => struct Escrow.EscrowedPayment storage ref)"
+ }
+ },
+ "id": 33638,
+ "indexExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33632,
+ "name": "received",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33616,
+ "src": "21670:8:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[] storage pointer"
+ }
+ },
+ "id": 33637,
+ "indexExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33636,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33633,
+ "name": "received",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33616,
+ "src": "21679:8:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[] storage pointer"
+ }
+ },
+ "id": 33634,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "21679:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "-",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 33635,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "21697:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "src": "21679:19:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "21670:29:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "21653:47:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage",
+ "typeString": "struct Escrow.EscrowedPayment storage ref"
+ }
+ },
+ "id": 33639,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "receivedIndex",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32700,
+ "src": "21653:61:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33640,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33608,
+ "src": "21717:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment storage pointer"
+ }
+ },
+ "id": 33641,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "receivedIndex",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32700,
+ "src": "21717:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "21653:85:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 33643,
+ "nodeType": "ExpressionStatement",
+ "src": "21653:85:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33654,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33644,
+ "name": "received",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33616,
+ "src": "21744:8:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[] storage pointer"
+ }
+ },
+ "id": 33647,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33645,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33608,
+ "src": "21753:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment storage pointer"
+ }
+ },
+ "id": 33646,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "receivedIndex",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32700,
+ "src": "21753:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "21744:31:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33648,
+ "name": "received",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33616,
+ "src": "21778:8:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[] storage pointer"
+ }
+ },
+ "id": 33653,
+ "indexExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33652,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33649,
+ "name": "received",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33616,
+ "src": "21787:8:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[] storage pointer"
+ }
+ },
+ "id": 33650,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "21787:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "-",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 33651,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "21805:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "src": "21787:19:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "21778:29:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "21744:63:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 33655,
+ "nodeType": "ExpressionStatement",
+ "src": "21744:63:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33664,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33656,
+ "name": "received",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33616,
+ "src": "21813:8:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[] storage pointer"
+ }
+ },
+ "id": 33658,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "21813:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 33662,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "21851:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33659,
+ "name": "received",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33616,
+ "src": "21831:8:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[] storage pointer"
+ }
+ },
+ "id": 33660,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "21831:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 33661,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 219,
+ "src": "21831:19:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 33663,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21831:22:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "21813:40:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 33665,
+ "nodeType": "ExpressionStatement",
+ "src": "21813:40:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33677,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33666,
+ "name": "escrowedPayments",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32711,
+ "src": "21860:16:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_EscrowedPayment_$32707_storage_$",
+ "typeString": "mapping(address => struct Escrow.EscrowedPayment storage ref)"
+ }
+ },
+ "id": 33673,
+ "indexExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33667,
+ "name": "sent",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33625,
+ "src": "21877:4:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[] storage pointer"
+ }
+ },
+ "id": 33672,
+ "indexExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33671,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33668,
+ "name": "sent",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33625,
+ "src": "21882:4:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[] storage pointer"
+ }
+ },
+ "id": 33669,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "21882:11:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "-",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 33670,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "21896:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "src": "21882:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "21877:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "21860:39:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage",
+ "typeString": "struct Escrow.EscrowedPayment storage ref"
+ }
+ },
+ "id": 33674,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "sentIndex",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32698,
+ "src": "21860:49:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33675,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33608,
+ "src": "21912:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment storage pointer"
+ }
+ },
+ "id": 33676,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sentIndex",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32698,
+ "src": "21912:17:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "21860:69:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 33678,
+ "nodeType": "ExpressionStatement",
+ "src": "21860:69:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33689,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33679,
+ "name": "sent",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33625,
+ "src": "21935:4:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[] storage pointer"
+ }
+ },
+ "id": 33682,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33680,
+ "name": "payment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33608,
+ "src": "21940:7:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage_ptr",
+ "typeString": "struct Escrow.EscrowedPayment storage pointer"
+ }
+ },
+ "id": 33681,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sentIndex",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 32698,
+ "src": "21940:17:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "21935:23:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33683,
+ "name": "sent",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33625,
+ "src": "21961:4:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[] storage pointer"
+ }
+ },
+ "id": 33688,
+ "indexExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33687,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33684,
+ "name": "sent",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33625,
+ "src": "21966:4:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[] storage pointer"
+ }
+ },
+ "id": 33685,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "21966:11:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "-",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 33686,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "21980:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "src": "21966:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "21961:21:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "21935:47:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 33690,
+ "nodeType": "ExpressionStatement",
+ "src": "21935:47:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33699,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33691,
+ "name": "sent",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33625,
+ "src": "21988:4:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[] storage pointer"
+ }
+ },
+ "id": 33693,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "21988:11:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 33697,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "22018:1:95",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33694,
+ "name": "sent",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33625,
+ "src": "22002:4:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[] storage pointer"
+ }
+ },
+ "id": 33695,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "22002:11:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 33696,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 219,
+ "src": "22002:15:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 33698,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "22002:18:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "21988:32:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 33700,
+ "nodeType": "ExpressionStatement",
+ "src": "21988:32:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33704,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "delete",
+ "prefix": true,
+ "src": "22027:34:95",
+ "subExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33701,
+ "name": "escrowedPayments",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32711,
+ "src": "22034:16:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_struct$_EscrowedPayment_$32707_storage_$",
+ "typeString": "mapping(address => struct Escrow.EscrowedPayment storage ref)"
+ }
+ },
+ "id": 33703,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 33702,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33604,
+ "src": "22051:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "22034:27:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_EscrowedPayment_$32707_storage",
+ "typeString": "struct Escrow.EscrowedPayment storage ref"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33705,
+ "nodeType": "ExpressionStatement",
+ "src": "22027:34:95"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 33709,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "delete",
+ "prefix": true,
+ "src": "22067:42:95",
+ "subExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 33706,
+ "name": "trustedIssuersPerPayment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32726,
+ "src": "22074:24:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
+ "typeString": "mapping(address => address[] storage ref)"
+ }
+ },
+ "id": 33708,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 33707,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33604,
+ "src": "22099:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "22074:35:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage",
+ "typeString": "address[] storage ref"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33710,
+ "nodeType": "ExpressionStatement",
+ "src": "22067:42:95"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33712,
+ "name": "paymentId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33604,
+ "src": "22140:9:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 33711,
+ "name": "TrustedIssuersUnset",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 32664,
+ "src": "22120:19:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 33713,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "22120:30:95",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33714,
+ "nodeType": "EmitStatement",
+ "src": "22115:35:95"
+ }
+ ]
+ },
+ "documentation": "@notice Deletes the payment from its receiver's and sender's lists of payments,\nand zeroes out all the data in the struct.\n@param paymentId The ID of the payment to be deleted.",
+ "id": 33716,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "deletePayment",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 33605,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33604,
+ "name": "paymentId",
+ "nodeType": "VariableDeclaration",
+ "scope": 33716,
+ "src": "21409:17:95",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33603,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "21409:7:95",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "21408:19:95"
+ },
+ "returnParameters": {
+ "id": 33606,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "21436:0:95"
+ },
+ "scope": 33717,
+ "src": "21386:769:95",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "private"
+ }
+ ],
+ "scope": 33718,
+ "src": "650:21507:95"
+ }
+ ],
+ "src": "0:22158:95"
+ },
+ "legacyAST": {
+ "attributes": {
+ "absolutePath": "project:/contracts/identity/Escrow.sol",
+ "exportedSymbols": {
+ "Escrow": [
+ 33717
+ ]
+ }
+ },
+ "children": [
+ {
+ "attributes": {
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".13"
+ ]
+ },
+ "id": 32601,
+ "name": "PragmaDirective",
+ "src": "0:24:95"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 364,
+ "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "scope": 33718,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 32602,
+ "name": "ImportDirective",
+ "src": "26:59:95"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 482,
+ "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "scope": 33718,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 32603,
+ "name": "ImportDirective",
+ "src": "86:63:95"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 887,
+ "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol",
+ "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol",
+ "scope": 33718,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 32604,
+ "name": "ImportDirective",
+ "src": "150:63:95"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 1176,
+ "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol",
+ "file": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol",
+ "scope": 33718,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 32605,
+ "name": "ImportDirective",
+ "src": "214:67:95"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 35925,
+ "absolutePath": "project:/contracts/identity/interfaces/IAttestations.sol",
+ "file": "./interfaces/IAttestations.sol",
+ "scope": 33718,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 32606,
+ "name": "ImportDirective",
+ "src": "283:40:95"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 36154,
+ "absolutePath": "project:/contracts/identity/interfaces/IFederatedAttestations.sol",
+ "file": "./interfaces/IFederatedAttestations.sol",
+ "scope": 33718,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 32607,
+ "name": "ImportDirective",
+ "src": "324:49:95"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 36032,
+ "absolutePath": "project:/contracts/identity/interfaces/IEscrow.sol",
+ "file": "./interfaces/IEscrow.sol",
+ "scope": 33718,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 32608,
+ "name": "ImportDirective",
+ "src": "374:34:95"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 5885,
+ "absolutePath": "project:/contracts/common/Initializable.sol",
+ "file": "../common/Initializable.sol",
+ "scope": 33718,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 32609,
+ "name": "ImportDirective",
+ "src": "409:37:95"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 9108,
+ "absolutePath": "project:/contracts/common/interfaces/ICeloVersionedContract.sol",
+ "file": "../common/interfaces/ICeloVersionedContract.sol",
+ "scope": 33718,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 32610,
+ "name": "ImportDirective",
+ "src": "447:57:95"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 8810,
+ "absolutePath": "project:/contracts/common/UsingRegistryV2BackwardsCompatible.sol",
+ "file": "../common/UsingRegistryV2BackwardsCompatible.sol",
+ "scope": 33718,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 32611,
+ "name": "ImportDirective",
+ "src": "505:58:95"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 6903,
+ "absolutePath": "project:/contracts/common/Signatures.sol",
+ "file": "../common/Signatures.sol",
+ "scope": 33718,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 32612,
+ "name": "ImportDirective",
+ "src": "564:34:95"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 9486,
+ "absolutePath": "project:/contracts/common/libraries/ReentrancyGuard.sol",
+ "file": "../common/libraries/ReentrancyGuard.sol",
+ "scope": 33718,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 32613,
+ "name": "ImportDirective",
+ "src": "599:49:95"
+ },
+ {
+ "attributes": {
+ "contractDependencies": [
+ 26,
+ 481,
+ 5884,
+ 8801,
+ 8809,
+ 9107,
+ 9485,
+ 36031
+ ],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "linearizedBaseContracts": [
+ 33717,
+ 8809,
+ 8801,
+ 5884,
+ 481,
+ 26,
+ 9485,
+ 9107,
+ 36031
+ ],
+ "name": "Escrow",
+ "scope": 33718
+ },
+ "children": [
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "IEscrow",
+ "referencedDeclaration": 36031,
+ "type": "contract IEscrow"
+ },
+ "id": 32614,
+ "name": "UserDefinedTypeName",
+ "src": "671:7:95"
+ }
+ ],
+ "id": 32615,
+ "name": "InheritanceSpecifier",
+ "src": "671:7:95"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "ICeloVersionedContract",
+ "referencedDeclaration": 9107,
+ "type": "contract ICeloVersionedContract"
+ },
+ "id": 32616,
+ "name": "UserDefinedTypeName",
+ "src": "682:22:95"
+ }
+ ],
+ "id": 32617,
+ "name": "InheritanceSpecifier",
+ "src": "682:22:95"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "ReentrancyGuard",
+ "referencedDeclaration": 9485,
+ "type": "contract ReentrancyGuard"
+ },
+ "id": 32618,
+ "name": "UserDefinedTypeName",
+ "src": "708:15:95"
+ }
+ ],
+ "id": 32619,
+ "name": "InheritanceSpecifier",
+ "src": "708:15:95"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "Ownable",
+ "referencedDeclaration": 481,
+ "type": "contract Ownable"
+ },
+ "id": 32620,
+ "name": "UserDefinedTypeName",
+ "src": "727:7:95"
+ }
+ ],
+ "id": 32621,
+ "name": "InheritanceSpecifier",
+ "src": "727:7:95"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "Initializable",
+ "referencedDeclaration": 5884,
+ "type": "contract Initializable"
+ },
+ "id": 32622,
+ "name": "UserDefinedTypeName",
+ "src": "738:13:95"
+ }
+ ],
+ "id": 32623,
+ "name": "InheritanceSpecifier",
+ "src": "738:13:95"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "UsingRegistryV2BackwardsCompatible",
+ "referencedDeclaration": 8809,
+ "type": "contract UsingRegistryV2BackwardsCompatible"
+ },
+ "id": 32624,
+ "name": "UserDefinedTypeName",
+ "src": "846:34:95"
+ }
+ ],
+ "id": 32625,
+ "name": "InheritanceSpecifier",
+ "src": "846:34:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "SafeMath",
+ "referencedDeclaration": 363,
+ "type": "library SafeMath"
+ },
+ "id": 32626,
+ "name": "UserDefinedTypeName",
+ "src": "891:8:95"
+ },
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32627,
+ "name": "ElementaryTypeName",
+ "src": "904:7:95"
+ }
+ ],
+ "id": 32628,
+ "name": "UsingForDirective",
+ "src": "885:27:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "SafeERC20",
+ "referencedDeclaration": 1175,
+ "type": "library SafeERC20"
+ },
+ "id": 32629,
+ "name": "UserDefinedTypeName",
+ "src": "921:9:95"
+ },
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "ERC20",
+ "referencedDeclaration": 886,
+ "type": "contract ERC20"
+ },
+ "id": 32630,
+ "name": "UserDefinedTypeName",
+ "src": "935:5:95"
+ }
+ ],
+ "id": 32631,
+ "name": "UsingForDirective",
+ "src": "915:26:95"
+ },
+ {
+ "attributes": {
+ "anonymous": false,
+ "documentation": null,
+ "name": "DefaultTrustedIssuerAdded"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": true,
+ "name": "trustedIssuer",
+ "scope": 32635,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32632,
+ "name": "ElementaryTypeName",
+ "src": "977:7:95"
+ }
+ ],
+ "id": 32633,
+ "name": "VariableDeclaration",
+ "src": "977:29:95"
+ }
+ ],
+ "id": 32634,
+ "name": "ParameterList",
+ "src": "976:31:95"
+ }
+ ],
+ "id": 32635,
+ "name": "EventDefinition",
+ "src": "945:63:95"
+ },
+ {
+ "attributes": {
+ "anonymous": false,
+ "documentation": null,
+ "name": "DefaultTrustedIssuerRemoved"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": true,
+ "name": "trustedIssuer",
+ "scope": 32639,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32636,
+ "name": "ElementaryTypeName",
+ "src": "1045:7:95"
+ }
+ ],
+ "id": 32637,
+ "name": "VariableDeclaration",
+ "src": "1045:29:95"
+ }
+ ],
+ "id": 32638,
+ "name": "ParameterList",
+ "src": "1044:31:95"
+ }
+ ],
+ "id": 32639,
+ "name": "EventDefinition",
+ "src": "1011:65:95"
+ },
+ {
+ "attributes": {
+ "anonymous": false,
+ "documentation": null,
+ "name": "Transfer"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": true,
+ "name": "from",
+ "scope": 32653,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32640,
+ "name": "ElementaryTypeName",
+ "src": "1100:7:95"
+ }
+ ],
+ "id": 32641,
+ "name": "VariableDeclaration",
+ "src": "1100:20:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": true,
+ "name": "identifier",
+ "scope": 32653,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 32642,
+ "name": "ElementaryTypeName",
+ "src": "1126:7:95"
+ }
+ ],
+ "id": 32643,
+ "name": "VariableDeclaration",
+ "src": "1126:26:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": true,
+ "name": "token",
+ "scope": 32653,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32644,
+ "name": "ElementaryTypeName",
+ "src": "1158:7:95"
+ }
+ ],
+ "id": 32645,
+ "name": "VariableDeclaration",
+ "src": "1158:21:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": false,
+ "name": "value",
+ "scope": 32653,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32646,
+ "name": "ElementaryTypeName",
+ "src": "1185:7:95"
+ }
+ ],
+ "id": 32647,
+ "name": "VariableDeclaration",
+ "src": "1185:13:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": false,
+ "name": "paymentId",
+ "scope": 32653,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32648,
+ "name": "ElementaryTypeName",
+ "src": "1204:7:95"
+ }
+ ],
+ "id": 32649,
+ "name": "VariableDeclaration",
+ "src": "1204:17:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": false,
+ "name": "minAttestations",
+ "scope": 32653,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32650,
+ "name": "ElementaryTypeName",
+ "src": "1227:7:95"
+ }
+ ],
+ "id": 32651,
+ "name": "VariableDeclaration",
+ "src": "1227:23:95"
+ }
+ ],
+ "id": 32652,
+ "name": "ParameterList",
+ "src": "1094:160:95"
+ }
+ ],
+ "id": 32653,
+ "name": "EventDefinition",
+ "src": "1080:175:95"
+ },
+ {
+ "attributes": {
+ "anonymous": false,
+ "documentation": null,
+ "name": "TrustedIssuersSet"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": true,
+ "name": "paymentId",
+ "scope": 32660,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32654,
+ "name": "ElementaryTypeName",
+ "src": "1283:7:95"
+ }
+ ],
+ "id": 32655,
+ "name": "VariableDeclaration",
+ "src": "1283:25:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": false,
+ "name": "trustedIssuers",
+ "scope": 32660,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32656,
+ "name": "ElementaryTypeName",
+ "src": "1310:7:95"
+ }
+ ],
+ "id": 32657,
+ "name": "ArrayTypeName",
+ "src": "1310:9:95"
+ }
+ ],
+ "id": 32658,
+ "name": "VariableDeclaration",
+ "src": "1310:24:95"
+ }
+ ],
+ "id": 32659,
+ "name": "ParameterList",
+ "src": "1282:53:95"
+ }
+ ],
+ "id": 32660,
+ "name": "EventDefinition",
+ "src": "1259:77:95"
+ },
+ {
+ "attributes": {
+ "anonymous": false,
+ "documentation": null,
+ "name": "TrustedIssuersUnset"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": true,
+ "name": "paymentId",
+ "scope": 32664,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32661,
+ "name": "ElementaryTypeName",
+ "src": "1365:7:95"
+ }
+ ],
+ "id": 32662,
+ "name": "VariableDeclaration",
+ "src": "1365:25:95"
+ }
+ ],
+ "id": 32663,
+ "name": "ParameterList",
+ "src": "1364:27:95"
+ }
+ ],
+ "id": 32664,
+ "name": "EventDefinition",
+ "src": "1339:53:95"
+ },
+ {
+ "attributes": {
+ "anonymous": false,
+ "documentation": null,
+ "name": "Withdrawal"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": true,
+ "name": "identifier",
+ "scope": 32676,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 32665,
+ "name": "ElementaryTypeName",
+ "src": "1418:7:95"
+ }
+ ],
+ "id": 32666,
+ "name": "VariableDeclaration",
+ "src": "1418:26:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": true,
+ "name": "to",
+ "scope": 32676,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32667,
+ "name": "ElementaryTypeName",
+ "src": "1561:7:95"
+ }
+ ],
+ "id": 32668,
+ "name": "VariableDeclaration",
+ "src": "1561:18:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": true,
+ "name": "token",
+ "scope": 32676,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32669,
+ "name": "ElementaryTypeName",
+ "src": "1585:7:95"
+ }
+ ],
+ "id": 32670,
+ "name": "VariableDeclaration",
+ "src": "1585:21:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": false,
+ "name": "value",
+ "scope": 32676,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32671,
+ "name": "ElementaryTypeName",
+ "src": "1612:7:95"
+ }
+ ],
+ "id": 32672,
+ "name": "VariableDeclaration",
+ "src": "1612:13:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": false,
+ "name": "paymentId",
+ "scope": 32676,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32673,
+ "name": "ElementaryTypeName",
+ "src": "1631:7:95"
+ }
+ ],
+ "id": 32674,
+ "name": "VariableDeclaration",
+ "src": "1631:17:95"
+ }
+ ],
+ "id": 32675,
+ "name": "ParameterList",
+ "src": "1412:240:95"
+ }
+ ],
+ "id": 32676,
+ "name": "EventDefinition",
+ "src": "1396:257:95"
+ },
+ {
+ "attributes": {
+ "anonymous": false,
+ "documentation": null,
+ "name": "Revocation"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": true,
+ "name": "identifier",
+ "scope": 32688,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 32677,
+ "name": "ElementaryTypeName",
+ "src": "1679:7:95"
+ }
+ ],
+ "id": 32678,
+ "name": "VariableDeclaration",
+ "src": "1679:26:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": true,
+ "name": "by",
+ "scope": 32688,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32679,
+ "name": "ElementaryTypeName",
+ "src": "1711:7:95"
+ }
+ ],
+ "id": 32680,
+ "name": "VariableDeclaration",
+ "src": "1711:18:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": true,
+ "name": "token",
+ "scope": 32688,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32681,
+ "name": "ElementaryTypeName",
+ "src": "1735:7:95"
+ }
+ ],
+ "id": 32682,
+ "name": "VariableDeclaration",
+ "src": "1735:21:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": false,
+ "name": "value",
+ "scope": 32688,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32683,
+ "name": "ElementaryTypeName",
+ "src": "1762:7:95"
+ }
+ ],
+ "id": 32684,
+ "name": "VariableDeclaration",
+ "src": "1762:13:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": false,
+ "name": "paymentId",
+ "scope": 32688,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32685,
+ "name": "ElementaryTypeName",
+ "src": "1781:7:95"
+ }
+ ],
+ "id": 32686,
+ "name": "VariableDeclaration",
+ "src": "1781:17:95"
+ }
+ ],
+ "id": 32687,
+ "name": "ParameterList",
+ "src": "1673:129:95"
+ }
+ ],
+ "id": 32688,
+ "name": "EventDefinition",
+ "src": "1657:146:95"
+ },
+ {
+ "attributes": {
+ "canonicalName": "Escrow.EscrowedPayment",
+ "name": "EscrowedPayment",
+ "scope": 33717,
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "recipientIdentifier",
+ "scope": 32707,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 32689,
+ "name": "ElementaryTypeName",
+ "src": "1836:7:95"
+ }
+ ],
+ "id": 32690,
+ "name": "VariableDeclaration",
+ "src": "1836:27:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "sender",
+ "scope": 32707,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32691,
+ "name": "ElementaryTypeName",
+ "src": "1869:7:95"
+ }
+ ],
+ "id": 32692,
+ "name": "VariableDeclaration",
+ "src": "1869:14:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "token",
+ "scope": 32707,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32693,
+ "name": "ElementaryTypeName",
+ "src": "1889:7:95"
+ }
+ ],
+ "id": 32694,
+ "name": "VariableDeclaration",
+ "src": "1889:13:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "value",
+ "scope": 32707,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32695,
+ "name": "ElementaryTypeName",
+ "src": "1908:7:95"
+ }
+ ],
+ "id": 32696,
+ "name": "VariableDeclaration",
+ "src": "1908:13:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "sentIndex",
+ "scope": 32707,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32697,
+ "name": "ElementaryTypeName",
+ "src": "1927:7:95"
+ }
+ ],
+ "id": 32698,
+ "name": "VariableDeclaration",
+ "src": "1927:17:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "receivedIndex",
+ "scope": 32707,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32699,
+ "name": "ElementaryTypeName",
+ "src": "2013:7:95"
+ }
+ ],
+ "id": 32700,
+ "name": "VariableDeclaration",
+ "src": "2013:21:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "timestamp",
+ "scope": 32707,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32701,
+ "name": "ElementaryTypeName",
+ "src": "2110:7:95"
+ }
+ ],
+ "id": 32702,
+ "name": "VariableDeclaration",
+ "src": "2110:17:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "expirySeconds",
+ "scope": 32707,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32703,
+ "name": "ElementaryTypeName",
+ "src": "2133:7:95"
+ }
+ ],
+ "id": 32704,
+ "name": "VariableDeclaration",
+ "src": "2133:21:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "minAttestations",
+ "scope": 32707,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32705,
+ "name": "ElementaryTypeName",
+ "src": "2160:7:95"
+ }
+ ],
+ "id": 32706,
+ "name": "VariableDeclaration",
+ "src": "2160:23:95"
+ }
+ ],
+ "id": 32707,
+ "name": "StructDefinition",
+ "src": "1807:381:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "escrowedPayments",
+ "scope": 33717,
+ "stateVariable": true,
+ "storageLocation": "default",
+ "type": "mapping(address => struct Escrow.EscrowedPayment)",
+ "value": null,
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "attributes": {
+ "type": "mapping(address => struct Escrow.EscrowedPayment)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "type": "address"
+ },
+ "id": 32708,
+ "name": "ElementaryTypeName",
+ "src": "2345:7:95"
+ },
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "EscrowedPayment",
+ "referencedDeclaration": 32707,
+ "type": "struct Escrow.EscrowedPayment"
+ },
+ "id": 32709,
+ "name": "UserDefinedTypeName",
+ "src": "2356:15:95"
+ }
+ ],
+ "id": 32710,
+ "name": "Mapping",
+ "src": "2337:35:95"
+ }
+ ],
+ "id": 32711,
+ "name": "VariableDeclaration",
+ "src": "2337:59:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "receivedPaymentIds",
+ "scope": 33717,
+ "stateVariable": true,
+ "storageLocation": "default",
+ "type": "mapping(bytes32 => address[])",
+ "value": null,
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "attributes": {
+ "type": "mapping(bytes32 => address[])"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 32712,
+ "name": "ElementaryTypeName",
+ "src": "2486:7:95"
+ },
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32713,
+ "name": "ElementaryTypeName",
+ "src": "2497:7:95"
+ }
+ ],
+ "id": 32714,
+ "name": "ArrayTypeName",
+ "src": "2497:9:95"
+ }
+ ],
+ "id": 32715,
+ "name": "Mapping",
+ "src": "2478:29:95"
+ }
+ ],
+ "id": 32716,
+ "name": "VariableDeclaration",
+ "src": "2478:55:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "sentPaymentIds",
+ "scope": 33717,
+ "stateVariable": true,
+ "storageLocation": "default",
+ "type": "mapping(address => address[])",
+ "value": null,
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "attributes": {
+ "type": "mapping(address => address[])"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "type": "address"
+ },
+ "id": 32717,
+ "name": "ElementaryTypeName",
+ "src": "2615:7:95"
+ },
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32718,
+ "name": "ElementaryTypeName",
+ "src": "2626:7:95"
+ }
+ ],
+ "id": 32719,
+ "name": "ArrayTypeName",
+ "src": "2626:9:95"
+ }
+ ],
+ "id": 32720,
+ "name": "Mapping",
+ "src": "2607:29:95"
+ }
+ ],
+ "id": 32721,
+ "name": "VariableDeclaration",
+ "src": "2607:51:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "trustedIssuersPerPayment",
+ "scope": 33717,
+ "stateVariable": true,
+ "storageLocation": "default",
+ "type": "mapping(address => address[])",
+ "value": null,
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "attributes": {
+ "type": "mapping(address => address[])"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "type": "address"
+ },
+ "id": 32722,
+ "name": "ElementaryTypeName",
+ "src": "2750:7:95"
+ },
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32723,
+ "name": "ElementaryTypeName",
+ "src": "2761:7:95"
+ }
+ ],
+ "id": 32724,
+ "name": "ArrayTypeName",
+ "src": "2761:9:95"
+ }
+ ],
+ "id": 32725,
+ "name": "Mapping",
+ "src": "2742:29:95"
+ }
+ ],
+ "id": 32726,
+ "name": "VariableDeclaration",
+ "src": "2742:61:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "defaultTrustedIssuers",
+ "scope": 33717,
+ "stateVariable": true,
+ "storageLocation": "default",
+ "type": "address[]",
+ "value": null,
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32727,
+ "name": "ElementaryTypeName",
+ "src": "2879:7:95"
+ }
+ ],
+ "id": 32728,
+ "name": "ArrayTypeName",
+ "src": "2879:9:95"
+ }
+ ],
+ "id": 32729,
+ "name": "VariableDeclaration",
+ "src": "2879:38:95"
+ },
+ {
+ "attributes": {
+ "constant": true,
+ "name": "MAX_TRUSTED_ISSUERS_PER_PAYMENT",
+ "scope": 33717,
+ "stateVariable": true,
+ "storageLocation": "default",
+ "type": "uint256",
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32730,
+ "name": "ElementaryTypeName",
+ "src": "3059:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "313030",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 100",
+ "value": "100"
+ },
+ "id": 32731,
+ "name": "Literal",
+ "src": "3117:3:95"
+ }
+ ],
+ "id": 32732,
+ "name": "VariableDeclaration",
+ "src": "3059:61:95"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Sets initialized == true on implementation contracts\n@param test Set to true to skip implementation initialization",
+ "implemented": true,
+ "isConstructor": true,
+ "kind": "constructor",
+ "name": "",
+ "scope": 33717,
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "test",
+ "scope": 32741,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bool",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bool",
+ "type": "bool"
+ },
+ "id": 32733,
+ "name": "ElementaryTypeName",
+ "src": "3282:4:95"
+ }
+ ],
+ "id": 32734,
+ "name": "VariableDeclaration",
+ "src": "3282:9:95"
+ }
+ ],
+ "id": 32735,
+ "name": "ParameterList",
+ "src": "3281:11:95"
+ },
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 32739,
+ "name": "ParameterList",
+ "src": "3320:0:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 5884,
+ "type": "type(contract Initializable)",
+ "value": "Initializable"
+ },
+ "id": 32736,
+ "name": "Identifier",
+ "src": "3300:13:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32734,
+ "type": "bool",
+ "value": "test"
+ },
+ "id": 32737,
+ "name": "Identifier",
+ "src": "3314:4:95"
+ }
+ ],
+ "id": 32738,
+ "name": "ModifierInvocation",
+ "src": "3300:19:95"
+ },
+ {
+ "attributes": {
+ "statements": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 32740,
+ "name": "Block",
+ "src": "3320:2:95"
+ }
+ ],
+ "id": 32741,
+ "name": "FunctionDefinition",
+ "src": "3270:52:95"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Returns the storage, major, minor, and patch version of the contract.\n@return The storage, major, minor, and patch version of the contract.",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "getVersionNumber",
+ "scope": 33717,
+ "stateMutability": "pure",
+ "superFunction": 9106,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 32742,
+ "name": "ParameterList",
+ "src": "3521:2:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 32759,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32743,
+ "name": "ElementaryTypeName",
+ "src": "3547:7:95"
+ }
+ ],
+ "id": 32744,
+ "name": "VariableDeclaration",
+ "src": "3547:7:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 32759,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32745,
+ "name": "ElementaryTypeName",
+ "src": "3556:7:95"
+ }
+ ],
+ "id": 32746,
+ "name": "VariableDeclaration",
+ "src": "3556:7:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 32759,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32747,
+ "name": "ElementaryTypeName",
+ "src": "3565:7:95"
+ }
+ ],
+ "id": 32748,
+ "name": "VariableDeclaration",
+ "src": "3565:7:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 32759,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32749,
+ "name": "ElementaryTypeName",
+ "src": "3574:7:95"
+ }
+ ],
+ "id": 32750,
+ "name": "VariableDeclaration",
+ "src": "3574:7:95"
+ }
+ ],
+ "id": 32751,
+ "name": "ParameterList",
+ "src": "3546:36:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "functionReturnParameters": 32751
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "type": "tuple(int_const 1,int_const 2,int_const 0,int_const 0)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 32752,
+ "name": "Literal",
+ "src": "3597:1:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "32",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 2",
+ "value": "2"
+ },
+ "id": 32753,
+ "name": "Literal",
+ "src": "3600:1:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 32754,
+ "name": "Literal",
+ "src": "3603:1:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 32755,
+ "name": "Literal",
+ "src": "3606:1:95"
+ }
+ ],
+ "id": 32756,
+ "name": "TupleExpression",
+ "src": "3596:12:95"
+ }
+ ],
+ "id": 32757,
+ "name": "Return",
+ "src": "3589:19:95"
+ }
+ ],
+ "id": 32758,
+ "name": "Block",
+ "src": "3583:30:95"
+ }
+ ],
+ "id": 32759,
+ "name": "FunctionDefinition",
+ "src": "3496:117:95"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Used in place of the constructor to allow the contract to be upgradable via proxy.",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "name": "initialize",
+ "scope": 33717,
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 32760,
+ "name": "ParameterList",
+ "src": "3744:2:95"
+ },
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 32763,
+ "name": "ParameterList",
+ "src": "3768:0:95"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 5883,
+ "type": "modifier ()",
+ "value": "initializer"
+ },
+ "id": 32761,
+ "name": "Identifier",
+ "src": "3756:11:95"
+ }
+ ],
+ "id": 32762,
+ "name": "ModifierInvocation",
+ "src": "3756:11:95"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 480,
+ "type": "function (address)",
+ "value": "_transferOwnership"
+ },
+ "id": 32764,
+ "name": "Identifier",
+ "src": "3774:18:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 32765,
+ "name": "Identifier",
+ "src": "3793:3:95"
+ }
+ ],
+ "id": 32766,
+ "name": "MemberAccess",
+ "src": "3793:10:95"
+ }
+ ],
+ "id": 32767,
+ "name": "FunctionCall",
+ "src": "3774:30:95"
+ }
+ ],
+ "id": 32768,
+ "name": "ExpressionStatement",
+ "src": "3774:30:95"
+ }
+ ],
+ "id": 32769,
+ "name": "Block",
+ "src": "3768:41:95"
+ }
+ ],
+ "id": 32770,
+ "name": "FunctionDefinition",
+ "src": "3725:84:95"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Add an address to the defaultTrustedIssuers list.\n@param trustedIssuer Address of the trustedIssuer to add.\n@dev Throws if trustedIssuer is null or already in defaultTrustedIssuers.\n@dev Throws if defaultTrustedIssuers is already at max allowed length.",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "name": "addDefaultTrustedIssuer",
+ "scope": 33717,
+ "stateMutability": "nonpayable",
+ "superFunction": 36023,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "trustedIssuer",
+ "scope": 32834,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32771,
+ "name": "ElementaryTypeName",
+ "src": "4139:7:95"
+ }
+ ],
+ "id": 32772,
+ "name": "VariableDeclaration",
+ "src": "4139:21:95"
+ }
+ ],
+ "id": 32773,
+ "name": "ParameterList",
+ "src": "4138:23:95"
+ },
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 32776,
+ "name": "ParameterList",
+ "src": "4181:0:95"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 414,
+ "type": "modifier ()",
+ "value": "onlyOwner"
+ },
+ "id": 32774,
+ "name": "Identifier",
+ "src": "4171:9:95"
+ }
+ ],
+ "id": 32775,
+ "name": "ModifierInvocation",
+ "src": "4171:9:95"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_1ecab2d2b7e7981bce4655941008cf69a669323c8e6a2fad011405733fce114b",
+ "typeString": "literal_string \"trustedIssuer can't be null\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 32777,
+ "name": "Identifier",
+ "src": "4187:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "!=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "address payable",
+ "type_conversion": true
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "type": "type(address)",
+ "value": "address"
+ },
+ "id": 32778,
+ "name": "ElementaryTypeNameExpression",
+ "src": "4195:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 32779,
+ "name": "Literal",
+ "src": "4203:1:95"
+ }
+ ],
+ "id": 32780,
+ "name": "FunctionCall",
+ "src": "4195:10:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32772,
+ "type": "address",
+ "value": "trustedIssuer"
+ },
+ "id": 32781,
+ "name": "Identifier",
+ "src": "4209:13:95"
+ }
+ ],
+ "id": 32782,
+ "name": "BinaryOperation",
+ "src": "4195:27:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "747275737465644973737565722063616e2774206265206e756c6c",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"trustedIssuer can't be null\"",
+ "value": "trustedIssuer can't be null"
+ },
+ "id": 32783,
+ "name": "Literal",
+ "src": "4224:29:95"
+ }
+ ],
+ "id": 32784,
+ "name": "FunctionCall",
+ "src": "4187:67:95"
+ }
+ ],
+ "id": 32785,
+ "name": "ExpressionStatement",
+ "src": "4187:67:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_5559e8773d7dc6d8822e5a9924558b39a246312f5465314589b97ca9b568d14f",
+ "typeString": "literal_string \"defaultTrustedIssuers.length can't exceed allowed number of trustedIssuers\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 32786,
+ "name": "Identifier",
+ "src": "4260:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "<=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32729,
+ "type": "address[] storage ref",
+ "value": "defaultTrustedIssuers"
+ },
+ "id": 32787,
+ "name": "Identifier",
+ "src": "4275:21:95"
+ }
+ ],
+ "id": 32788,
+ "name": "MemberAccess",
+ "src": "4275:28:95"
+ }
+ ],
+ "id": 32789,
+ "name": "MemberAccess",
+ "src": "4275:32:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 32790,
+ "name": "Literal",
+ "src": "4308:1:95"
+ }
+ ],
+ "id": 32791,
+ "name": "FunctionCall",
+ "src": "4275:35:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32732,
+ "type": "uint256",
+ "value": "MAX_TRUSTED_ISSUERS_PER_PAYMENT"
+ },
+ "id": 32792,
+ "name": "Identifier",
+ "src": "4314:31:95"
+ }
+ ],
+ "id": 32793,
+ "name": "BinaryOperation",
+ "src": "4275:70:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "64656661756c7454727573746564497373756572732e6c656e6774682063616e27742065786365656420616c6c6f776564206e756d626572206f66207472757374656449737375657273",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"defaultTrustedIssuers.length can't exceed allowed number of trustedIssuers\"",
+ "value": "defaultTrustedIssuers.length can't exceed allowed number of trustedIssuers"
+ },
+ "id": 32794,
+ "name": "Literal",
+ "src": "4353:76:95"
+ }
+ ],
+ "id": 32795,
+ "name": "FunctionCall",
+ "src": "4260:175:95"
+ }
+ ],
+ "id": 32796,
+ "name": "ExpressionStatement",
+ "src": "4260:175:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 32798
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "i",
+ "scope": 32822,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32797,
+ "name": "ElementaryTypeName",
+ "src": "4495:7:95"
+ }
+ ],
+ "id": 32798,
+ "name": "VariableDeclaration",
+ "src": "4495:9:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 32799,
+ "name": "Literal",
+ "src": "4507:1:95"
+ }
+ ],
+ "id": 32800,
+ "name": "VariableDeclarationStatement",
+ "src": "4495:13:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "<",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32798,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 32801,
+ "name": "Identifier",
+ "src": "4510:1:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32729,
+ "type": "address[] storage ref",
+ "value": "defaultTrustedIssuers"
+ },
+ "id": 32802,
+ "name": "Identifier",
+ "src": "4514:21:95"
+ }
+ ],
+ "id": 32803,
+ "name": "MemberAccess",
+ "src": "4514:28:95"
+ }
+ ],
+ "id": 32804,
+ "name": "BinaryOperation",
+ "src": "4510:32:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32798,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 32805,
+ "name": "Identifier",
+ "src": "4544:1:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32798,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 32806,
+ "name": "Identifier",
+ "src": "4548:1:95"
+ }
+ ],
+ "id": 32807,
+ "name": "MemberAccess",
+ "src": "4548:5:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 32808,
+ "name": "Literal",
+ "src": "4554:1:95"
+ }
+ ],
+ "id": 32809,
+ "name": "FunctionCall",
+ "src": "4548:8:95"
+ }
+ ],
+ "id": 32810,
+ "name": "Assignment",
+ "src": "4544:12:95"
+ }
+ ],
+ "id": 32811,
+ "name": "ExpressionStatement",
+ "src": "4544:12:95"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_943cbddf89bb5fd831fb270762494d8264974cb87ecb793a4d6caa24efd4a71f",
+ "typeString": "literal_string \"trustedIssuer already in defaultTrustedIssuers\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 32812,
+ "name": "Identifier",
+ "src": "4566:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "!=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32729,
+ "type": "address[] storage ref",
+ "value": "defaultTrustedIssuers"
+ },
+ "id": 32813,
+ "name": "Identifier",
+ "src": "4583:21:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32798,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 32814,
+ "name": "Identifier",
+ "src": "4605:1:95"
+ }
+ ],
+ "id": 32815,
+ "name": "IndexAccess",
+ "src": "4583:24:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32772,
+ "type": "address",
+ "value": "trustedIssuer"
+ },
+ "id": 32816,
+ "name": "Identifier",
+ "src": "4611:13:95"
+ }
+ ],
+ "id": 32817,
+ "name": "BinaryOperation",
+ "src": "4583:41:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "7472757374656449737375657220616c726561647920696e2064656661756c745472757374656449737375657273",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"trustedIssuer already in defaultTrustedIssuers\"",
+ "value": "trustedIssuer already in defaultTrustedIssuers"
+ },
+ "id": 32818,
+ "name": "Literal",
+ "src": "4634:48:95"
+ }
+ ],
+ "id": 32819,
+ "name": "FunctionCall",
+ "src": "4566:124:95"
+ }
+ ],
+ "id": 32820,
+ "name": "ExpressionStatement",
+ "src": "4566:124:95"
+ }
+ ],
+ "id": 32821,
+ "name": "Block",
+ "src": "4558:139:95"
+ }
+ ],
+ "id": 32822,
+ "name": "ForStatement",
+ "src": "4490:207:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "push",
+ "referencedDeclaration": null,
+ "type": "function (address) returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32729,
+ "type": "address[] storage ref",
+ "value": "defaultTrustedIssuers"
+ },
+ "id": 32823,
+ "name": "Identifier",
+ "src": "4702:21:95"
+ }
+ ],
+ "id": 32825,
+ "name": "MemberAccess",
+ "src": "4702:26:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32772,
+ "type": "address",
+ "value": "trustedIssuer"
+ },
+ "id": 32826,
+ "name": "Identifier",
+ "src": "4729:13:95"
+ }
+ ],
+ "id": 32827,
+ "name": "FunctionCall",
+ "src": "4702:41:95"
+ }
+ ],
+ "id": 32828,
+ "name": "ExpressionStatement",
+ "src": "4702:41:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32635,
+ "type": "function (address)",
+ "value": "DefaultTrustedIssuerAdded"
+ },
+ "id": 32829,
+ "name": "Identifier",
+ "src": "4754:25:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32772,
+ "type": "address",
+ "value": "trustedIssuer"
+ },
+ "id": 32830,
+ "name": "Identifier",
+ "src": "4780:13:95"
+ }
+ ],
+ "id": 32831,
+ "name": "FunctionCall",
+ "src": "4754:40:95"
+ }
+ ],
+ "id": 32832,
+ "name": "EmitStatement",
+ "src": "4749:45:95"
+ }
+ ],
+ "id": 32833,
+ "name": "Block",
+ "src": "4181:618:95"
+ }
+ ],
+ "id": 32834,
+ "name": "FunctionDefinition",
+ "src": "4106:693:95"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Remove an address from the defaultTrustedIssuers list.\n@param trustedIssuer Address of the trustedIssuer to remove.\n@param index Index of trustedIssuer in defaultTrustedIssuers.\n@dev Throws if trustedIssuer is not in defaultTrustedIssuers at index.",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "name": "removeDefaultTrustedIssuer",
+ "scope": 33717,
+ "stateMutability": "nonpayable",
+ "superFunction": 36030,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "trustedIssuer",
+ "scope": 32891,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32835,
+ "name": "ElementaryTypeName",
+ "src": "5128:7:95"
+ }
+ ],
+ "id": 32836,
+ "name": "VariableDeclaration",
+ "src": "5128:21:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "index",
+ "scope": 32891,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32837,
+ "name": "ElementaryTypeName",
+ "src": "5151:7:95"
+ }
+ ],
+ "id": 32838,
+ "name": "VariableDeclaration",
+ "src": "5151:13:95"
+ }
+ ],
+ "id": 32839,
+ "name": "ParameterList",
+ "src": "5127:38:95"
+ },
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 32842,
+ "name": "ParameterList",
+ "src": "5185:0:95"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 414,
+ "type": "modifier ()",
+ "value": "onlyOwner"
+ },
+ "id": 32840,
+ "name": "Identifier",
+ "src": "5175:9:95"
+ }
+ ],
+ "id": 32841,
+ "name": "ModifierInvocation",
+ "src": "5175:9:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 32844
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "numDefaultTrustedIssuers",
+ "scope": 32890,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32843,
+ "name": "ElementaryTypeName",
+ "src": "5191:7:95"
+ }
+ ],
+ "id": 32844,
+ "name": "VariableDeclaration",
+ "src": "5191:32:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32729,
+ "type": "address[] storage ref",
+ "value": "defaultTrustedIssuers"
+ },
+ "id": 32845,
+ "name": "Identifier",
+ "src": "5226:21:95"
+ }
+ ],
+ "id": 32846,
+ "name": "MemberAccess",
+ "src": "5226:28:95"
+ }
+ ],
+ "id": 32847,
+ "name": "VariableDeclarationStatement",
+ "src": "5191:63:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_195168356eea181b0492eb7e4c1418db8030686342cbf6805a23a83ef4284799",
+ "typeString": "literal_string \"index is invalid\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 32848,
+ "name": "Identifier",
+ "src": "5260:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "<",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32838,
+ "type": "uint256",
+ "value": "index"
+ },
+ "id": 32849,
+ "name": "Identifier",
+ "src": "5268:5:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32844,
+ "type": "uint256",
+ "value": "numDefaultTrustedIssuers"
+ },
+ "id": 32850,
+ "name": "Identifier",
+ "src": "5276:24:95"
+ }
+ ],
+ "id": 32851,
+ "name": "BinaryOperation",
+ "src": "5268:32:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "696e64657820697320696e76616c6964",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"index is invalid\"",
+ "value": "index is invalid"
+ },
+ "id": 32852,
+ "name": "Literal",
+ "src": "5302:18:95"
+ }
+ ],
+ "id": 32853,
+ "name": "FunctionCall",
+ "src": "5260:61:95"
+ }
+ ],
+ "id": 32854,
+ "name": "ExpressionStatement",
+ "src": "5260:61:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_255f9a563524415f0549ebd2882cd0c4d7f2d2756f57c0798919237a7c1b9d73",
+ "typeString": "literal_string \"trustedIssuer does not match address found at defaultTrustedIssuers[index]\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 32855,
+ "name": "Identifier",
+ "src": "5327:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "==",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32729,
+ "type": "address[] storage ref",
+ "value": "defaultTrustedIssuers"
+ },
+ "id": 32856,
+ "name": "Identifier",
+ "src": "5342:21:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32838,
+ "type": "uint256",
+ "value": "index"
+ },
+ "id": 32857,
+ "name": "Identifier",
+ "src": "5364:5:95"
+ }
+ ],
+ "id": 32858,
+ "name": "IndexAccess",
+ "src": "5342:28:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32836,
+ "type": "address",
+ "value": "trustedIssuer"
+ },
+ "id": 32859,
+ "name": "Identifier",
+ "src": "5374:13:95"
+ }
+ ],
+ "id": 32860,
+ "name": "BinaryOperation",
+ "src": "5342:45:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "7472757374656449737375657220646f6573206e6f74206d61746368206164647265737320666f756e642061742064656661756c7454727573746564497373756572735b696e6465785d",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"trustedIssuer does not match address found at defaultTrustedIssuers[index]\"",
+ "value": "trustedIssuer does not match address found at defaultTrustedIssuers[index]"
+ },
+ "id": 32861,
+ "name": "Literal",
+ "src": "5395:76:95"
+ }
+ ],
+ "id": 32862,
+ "name": "FunctionCall",
+ "src": "5327:150:95"
+ }
+ ],
+ "id": 32863,
+ "name": "ExpressionStatement",
+ "src": "5327:150:95"
+ },
+ {
+ "attributes": {
+ "falseBody": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "!=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32838,
+ "type": "uint256",
+ "value": "index"
+ },
+ "id": 32864,
+ "name": "Identifier",
+ "src": "5487:5:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "-",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32844,
+ "type": "uint256",
+ "value": "numDefaultTrustedIssuers"
+ },
+ "id": 32865,
+ "name": "Identifier",
+ "src": "5496:24:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 32866,
+ "name": "Literal",
+ "src": "5523:1:95"
+ }
+ ],
+ "id": 32867,
+ "name": "BinaryOperation",
+ "src": "5496:28:95"
+ }
+ ],
+ "id": 32868,
+ "name": "BinaryOperation",
+ "src": "5487:37:95"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32729,
+ "type": "address[] storage ref",
+ "value": "defaultTrustedIssuers"
+ },
+ "id": 32869,
+ "name": "Identifier",
+ "src": "5580:21:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32838,
+ "type": "uint256",
+ "value": "index"
+ },
+ "id": 32870,
+ "name": "Identifier",
+ "src": "5602:5:95"
+ }
+ ],
+ "id": 32871,
+ "name": "IndexAccess",
+ "src": "5580:28:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32729,
+ "type": "address[] storage ref",
+ "value": "defaultTrustedIssuers"
+ },
+ "id": 32872,
+ "name": "Identifier",
+ "src": "5611:21:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "-",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32844,
+ "type": "uint256",
+ "value": "numDefaultTrustedIssuers"
+ },
+ "id": 32873,
+ "name": "Identifier",
+ "src": "5633:24:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 32874,
+ "name": "Literal",
+ "src": "5660:1:95"
+ }
+ ],
+ "id": 32875,
+ "name": "BinaryOperation",
+ "src": "5633:28:95"
+ }
+ ],
+ "id": 32876,
+ "name": "IndexAccess",
+ "src": "5611:51:95"
+ }
+ ],
+ "id": 32877,
+ "name": "Assignment",
+ "src": "5580:82:95"
+ }
+ ],
+ "id": 32878,
+ "name": "ExpressionStatement",
+ "src": "5580:82:95"
+ }
+ ],
+ "id": 32879,
+ "name": "Block",
+ "src": "5526:143:95"
+ }
+ ],
+ "id": 32880,
+ "name": "IfStatement",
+ "src": "5483:186:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "arguments": [
+ null
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ null
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "pop",
+ "referencedDeclaration": null,
+ "type": "function ()"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32729,
+ "type": "address[] storage ref",
+ "value": "defaultTrustedIssuers"
+ },
+ "id": 32881,
+ "name": "Identifier",
+ "src": "5674:21:95"
+ }
+ ],
+ "id": 32883,
+ "name": "MemberAccess",
+ "src": "5674:25:95"
+ }
+ ],
+ "id": 32884,
+ "name": "FunctionCall",
+ "src": "5674:27:95"
+ }
+ ],
+ "id": 32885,
+ "name": "ExpressionStatement",
+ "src": "5674:27:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32639,
+ "type": "function (address)",
+ "value": "DefaultTrustedIssuerRemoved"
+ },
+ "id": 32886,
+ "name": "Identifier",
+ "src": "5712:27:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32836,
+ "type": "address",
+ "value": "trustedIssuer"
+ },
+ "id": 32887,
+ "name": "Identifier",
+ "src": "5740:13:95"
+ }
+ ],
+ "id": 32888,
+ "name": "FunctionCall",
+ "src": "5712:42:95"
+ }
+ ],
+ "id": 32889,
+ "name": "EmitStatement",
+ "src": "5707:47:95"
+ }
+ ],
+ "id": 32890,
+ "name": "Block",
+ "src": "5185:574:95"
+ }
+ ],
+ "id": 32891,
+ "name": "FunctionDefinition",
+ "src": "5092:667:95"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Transfer tokens to a specific user. Supports both identity with privacy (an empty\n identifier and 0 minAttestations) and without (with identifier and minAttestations).\n Sets trustedIssuers to the issuers listed in `defaultTrustedIssuers`.\n (To override this and set custom trusted issuers, use `transferWithTrustedIssuers`.)\n@param identifier The hashed identifier of a user to transfer to.\n@param token The token to be transferred.\n@param value The amount to be transferred.\n@param expirySeconds The number of seconds before the sender can revoke the payment.\n@param paymentId The address of the temporary wallet associated with this payment. Users must\n prove ownership of the corresponding private key to withdraw from escrow.\n@param minAttestations The min number of attestations required to withdraw the payment.\n@return True if transfer succeeded.\n@dev Throws if 'token' or 'value' is 0.\n@dev Throws if identifier is null and minAttestations > 0.\n@dev If minAttestations is 0, trustedIssuers will be set to empty list.\n@dev msg.sender needs to have already approved this contract to transfer",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "name": "transfer",
+ "scope": 33717,
+ "stateMutability": "nonpayable",
+ "superFunction": 35943,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifier",
+ "scope": 32935,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 32892,
+ "name": "ElementaryTypeName",
+ "src": "7051:7:95"
+ }
+ ],
+ "id": 32893,
+ "name": "VariableDeclaration",
+ "src": "7051:18:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "token",
+ "scope": 32935,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32894,
+ "name": "ElementaryTypeName",
+ "src": "7075:7:95"
+ }
+ ],
+ "id": 32895,
+ "name": "VariableDeclaration",
+ "src": "7075:13:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "value",
+ "scope": 32935,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32896,
+ "name": "ElementaryTypeName",
+ "src": "7094:7:95"
+ }
+ ],
+ "id": 32897,
+ "name": "VariableDeclaration",
+ "src": "7094:13:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "expirySeconds",
+ "scope": 32935,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32898,
+ "name": "ElementaryTypeName",
+ "src": "7113:7:95"
+ }
+ ],
+ "id": 32899,
+ "name": "VariableDeclaration",
+ "src": "7113:21:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "paymentId",
+ "scope": 32935,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32900,
+ "name": "ElementaryTypeName",
+ "src": "7140:7:95"
+ }
+ ],
+ "id": 32901,
+ "name": "VariableDeclaration",
+ "src": "7140:17:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "minAttestations",
+ "scope": 32935,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32902,
+ "name": "ElementaryTypeName",
+ "src": "7163:7:95"
+ }
+ ],
+ "id": 32903,
+ "name": "VariableDeclaration",
+ "src": "7163:23:95"
+ }
+ ],
+ "id": 32904,
+ "name": "ParameterList",
+ "src": "7045:145:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 32935,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bool",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bool",
+ "type": "bool"
+ },
+ "id": 32907,
+ "name": "ElementaryTypeName",
+ "src": "7222:4:95"
+ }
+ ],
+ "id": 32908,
+ "name": "VariableDeclaration",
+ "src": "7222:4:95"
+ }
+ ],
+ "id": 32909,
+ "name": "ParameterList",
+ "src": "7221:6:95"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 9484,
+ "type": "modifier ()",
+ "value": "nonReentrant"
+ },
+ "id": 32905,
+ "name": "Identifier",
+ "src": "7200:12:95"
+ }
+ ],
+ "id": 32906,
+ "name": "ModifierInvocation",
+ "src": "7200:12:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 32913
+ ],
+ "initialValue": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "trustedIssuers",
+ "scope": 32934,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "type": "address"
+ },
+ "id": 32911,
+ "name": "ElementaryTypeName",
+ "src": "7234:7:95"
+ }
+ ],
+ "id": 32912,
+ "name": "ArrayTypeName",
+ "src": "7234:9:95"
+ }
+ ],
+ "id": 32913,
+ "name": "VariableDeclaration",
+ "src": "7234:31:95"
+ }
+ ],
+ "id": 32914,
+ "name": "VariableDeclarationStatement",
+ "src": "7234:31:95"
+ },
+ {
+ "attributes": {
+ "falseBody": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": ">",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32903,
+ "type": "uint256",
+ "value": "minAttestations"
+ },
+ "id": 32915,
+ "name": "Identifier",
+ "src": "7342:15:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 32916,
+ "name": "Literal",
+ "src": "7360:1:95"
+ }
+ ],
+ "id": 32917,
+ "name": "BinaryOperation",
+ "src": "7342:19:95"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "address[] memory"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32913,
+ "type": "address[] memory",
+ "value": "trustedIssuers"
+ },
+ "id": 32918,
+ "name": "Identifier",
+ "src": "7371:14:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32729,
+ "type": "address[] storage ref",
+ "value": "defaultTrustedIssuers"
+ },
+ "id": 32919,
+ "name": "Identifier",
+ "src": "7388:21:95"
+ }
+ ],
+ "id": 32920,
+ "name": "Assignment",
+ "src": "7371:38:95"
+ }
+ ],
+ "id": 32921,
+ "name": "ExpressionStatement",
+ "src": "7371:38:95"
+ }
+ ],
+ "id": 32922,
+ "name": "Block",
+ "src": "7363:53:95"
+ }
+ ],
+ "id": 32923,
+ "name": "IfStatement",
+ "src": "7338:78:95"
+ },
+ {
+ "attributes": {
+ "functionReturnParameters": 32909
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "bool",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33602,
+ "type": "function (bytes32,address,uint256,uint256,address,uint256,address[] memory) returns (bool)",
+ "value": "_transfer"
+ },
+ "id": 32924,
+ "name": "Identifier",
+ "src": "7434:9:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32893,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 32925,
+ "name": "Identifier",
+ "src": "7453:10:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32895,
+ "type": "address",
+ "value": "token"
+ },
+ "id": 32926,
+ "name": "Identifier",
+ "src": "7473:5:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32897,
+ "type": "uint256",
+ "value": "value"
+ },
+ "id": 32927,
+ "name": "Identifier",
+ "src": "7488:5:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32899,
+ "type": "uint256",
+ "value": "expirySeconds"
+ },
+ "id": 32928,
+ "name": "Identifier",
+ "src": "7503:13:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32901,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 32929,
+ "name": "Identifier",
+ "src": "7526:9:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32903,
+ "type": "uint256",
+ "value": "minAttestations"
+ },
+ "id": 32930,
+ "name": "Identifier",
+ "src": "7545:15:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32913,
+ "type": "address[] memory",
+ "value": "trustedIssuers"
+ },
+ "id": 32931,
+ "name": "Identifier",
+ "src": "7570:14:95"
+ }
+ ],
+ "id": 32932,
+ "name": "FunctionCall",
+ "src": "7434:158:95"
+ }
+ ],
+ "id": 32933,
+ "name": "Return",
+ "src": "7421:171:95"
+ }
+ ],
+ "id": 32934,
+ "name": "Block",
+ "src": "7228:369:95"
+ }
+ ],
+ "id": 32935,
+ "name": "FunctionDefinition",
+ "src": "7028:569:95"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Transfer tokens to a specific user. Supports both identity with privacy (an empty\n identifier and 0 minAttestations) and without (with identifier\n and attestations completed by trustedIssuers).\n@param identifier The hashed identifier of a user to transfer to.\n@param token The token to be transferred.\n@param value The amount to be transferred.\n@param expirySeconds The number of seconds before the sender can revoke the payment.\n@param paymentId The address of the temporary wallet associated with this payment. Users must\n prove ownership of the corresponding private key to withdraw from escrow.\n@param minAttestations The min number of attestations required to withdraw the payment.\n@param trustedIssuers Array of issuers whose attestations in FederatedAttestations.sol\n will be accepted to prove ownership over an identifier.\n@return True if transfer succeeded.\n@dev Throws if 'token' or 'value' is 0.\n@dev Throws if identifier is null and minAttestations > 0.\n@dev Throws if minAttestations == 0 but trustedIssuers are provided.\n@dev msg.sender needs to have already approved this contract to transfer.",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "name": "transferWithTrustedIssuers",
+ "scope": 33717,
+ "stateMutability": "nonpayable",
+ "superFunction": 35963,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifier",
+ "scope": 32968,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 32936,
+ "name": "ElementaryTypeName",
+ "src": "8864:7:95"
+ }
+ ],
+ "id": 32937,
+ "name": "VariableDeclaration",
+ "src": "8864:18:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "token",
+ "scope": 32968,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32938,
+ "name": "ElementaryTypeName",
+ "src": "8888:7:95"
+ }
+ ],
+ "id": 32939,
+ "name": "VariableDeclaration",
+ "src": "8888:13:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "value",
+ "scope": 32968,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32940,
+ "name": "ElementaryTypeName",
+ "src": "8907:7:95"
+ }
+ ],
+ "id": 32941,
+ "name": "VariableDeclaration",
+ "src": "8907:13:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "expirySeconds",
+ "scope": 32968,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32942,
+ "name": "ElementaryTypeName",
+ "src": "8926:7:95"
+ }
+ ],
+ "id": 32943,
+ "name": "VariableDeclaration",
+ "src": "8926:21:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "paymentId",
+ "scope": 32968,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32944,
+ "name": "ElementaryTypeName",
+ "src": "8953:7:95"
+ }
+ ],
+ "id": 32945,
+ "name": "VariableDeclaration",
+ "src": "8953:17:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "minAttestations",
+ "scope": 32968,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 32946,
+ "name": "ElementaryTypeName",
+ "src": "8976:7:95"
+ }
+ ],
+ "id": 32947,
+ "name": "VariableDeclaration",
+ "src": "8976:23:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "trustedIssuers",
+ "scope": 32968,
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32948,
+ "name": "ElementaryTypeName",
+ "src": "9005:7:95"
+ }
+ ],
+ "id": 32949,
+ "name": "ArrayTypeName",
+ "src": "9005:9:95"
+ }
+ ],
+ "id": 32950,
+ "name": "VariableDeclaration",
+ "src": "9005:33:95"
+ }
+ ],
+ "id": 32951,
+ "name": "ParameterList",
+ "src": "8858:184:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 32968,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bool",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bool",
+ "type": "bool"
+ },
+ "id": 32954,
+ "name": "ElementaryTypeName",
+ "src": "9074:4:95"
+ }
+ ],
+ "id": 32955,
+ "name": "VariableDeclaration",
+ "src": "9074:4:95"
+ }
+ ],
+ "id": 32956,
+ "name": "ParameterList",
+ "src": "9073:6:95"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 9484,
+ "type": "modifier ()",
+ "value": "nonReentrant"
+ },
+ "id": 32952,
+ "name": "Identifier",
+ "src": "9052:12:95"
+ }
+ ],
+ "id": 32953,
+ "name": "ModifierInvocation",
+ "src": "9052:12:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "functionReturnParameters": 32956
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "bool",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33602,
+ "type": "function (bytes32,address,uint256,uint256,address,uint256,address[] memory) returns (bool)",
+ "value": "_transfer"
+ },
+ "id": 32957,
+ "name": "Identifier",
+ "src": "9099:9:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32937,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 32958,
+ "name": "Identifier",
+ "src": "9118:10:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32939,
+ "type": "address",
+ "value": "token"
+ },
+ "id": 32959,
+ "name": "Identifier",
+ "src": "9138:5:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32941,
+ "type": "uint256",
+ "value": "value"
+ },
+ "id": 32960,
+ "name": "Identifier",
+ "src": "9153:5:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32943,
+ "type": "uint256",
+ "value": "expirySeconds"
+ },
+ "id": 32961,
+ "name": "Identifier",
+ "src": "9168:13:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32945,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 32962,
+ "name": "Identifier",
+ "src": "9191:9:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32947,
+ "type": "uint256",
+ "value": "minAttestations"
+ },
+ "id": 32963,
+ "name": "Identifier",
+ "src": "9210:15:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32950,
+ "type": "address[] calldata",
+ "value": "trustedIssuers"
+ },
+ "id": 32964,
+ "name": "Identifier",
+ "src": "9235:14:95"
+ }
+ ],
+ "id": 32965,
+ "name": "FunctionCall",
+ "src": "9099:158:95"
+ }
+ ],
+ "id": 32966,
+ "name": "Return",
+ "src": "9086:171:95"
+ }
+ ],
+ "id": 32967,
+ "name": "Block",
+ "src": "9080:182:95"
+ }
+ ],
+ "id": 32968,
+ "name": "FunctionDefinition",
+ "src": "8823:439:95"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Withdraws tokens for a verified user.\n@param paymentId The ID for the EscrowedPayment struct that contains all relevant information.\n@param v The recovery id of the incoming ECDSA signature.\n@param r Output value r of the ECDSA signature.\n@param s Output value s of the ECDSA signature.\n@return True if withdraw succeeded.\n@dev Throws if 'token' or 'value' is 0.\n@dev Throws if msg.sender does not prove ownership of the withdraw key.",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "name": "withdraw",
+ "scope": 33717,
+ "stateMutability": "nonpayable",
+ "superFunction": 35976,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "paymentId",
+ "scope": 33122,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32969,
+ "name": "ElementaryTypeName",
+ "src": "9770:7:95"
+ }
+ ],
+ "id": 32970,
+ "name": "VariableDeclaration",
+ "src": "9770:17:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "v",
+ "scope": 33122,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint8",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint8",
+ "type": "uint8"
+ },
+ "id": 32971,
+ "name": "ElementaryTypeName",
+ "src": "9789:5:95"
+ }
+ ],
+ "id": 32972,
+ "name": "VariableDeclaration",
+ "src": "9789:7:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "r",
+ "scope": 33122,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 32973,
+ "name": "ElementaryTypeName",
+ "src": "9798:7:95"
+ }
+ ],
+ "id": 32974,
+ "name": "VariableDeclaration",
+ "src": "9798:9:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "s",
+ "scope": 33122,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 32975,
+ "name": "ElementaryTypeName",
+ "src": "9809:7:95"
+ }
+ ],
+ "id": 32976,
+ "name": "VariableDeclaration",
+ "src": "9809:9:95"
+ }
+ ],
+ "id": 32977,
+ "name": "ParameterList",
+ "src": "9769:50:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 33122,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bool",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bool",
+ "type": "bool"
+ },
+ "id": 32980,
+ "name": "ElementaryTypeName",
+ "src": "9863:4:95"
+ }
+ ],
+ "id": 32981,
+ "name": "VariableDeclaration",
+ "src": "9863:4:95"
+ }
+ ],
+ "id": 32982,
+ "name": "ParameterList",
+ "src": "9862:6:95"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 9484,
+ "type": "modifier ()",
+ "value": "nonReentrant"
+ },
+ "id": 32978,
+ "name": "Identifier",
+ "src": "9837:12:95"
+ }
+ ],
+ "id": 32979,
+ "name": "ModifierInvocation",
+ "src": "9837:12:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 32984
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "signer",
+ "scope": 33121,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 32983,
+ "name": "ElementaryTypeName",
+ "src": "9877:7:95"
+ }
+ ],
+ "id": 32984,
+ "name": "VariableDeclaration",
+ "src": "9877:14:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "address",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "getSignerOfAddress",
+ "referencedDeclaration": 6810,
+ "type": "function (address,uint8,bytes32,bytes32) pure returns (address)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 6902,
+ "type": "type(library Signatures)",
+ "value": "Signatures"
+ },
+ "id": 32985,
+ "name": "Identifier",
+ "src": "9894:10:95"
+ }
+ ],
+ "id": 32986,
+ "name": "MemberAccess",
+ "src": "9894:29:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 32987,
+ "name": "Identifier",
+ "src": "9924:3:95"
+ }
+ ],
+ "id": 32988,
+ "name": "MemberAccess",
+ "src": "9924:10:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32972,
+ "type": "uint8",
+ "value": "v"
+ },
+ "id": 32989,
+ "name": "Identifier",
+ "src": "9936:1:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32974,
+ "type": "bytes32",
+ "value": "r"
+ },
+ "id": 32990,
+ "name": "Identifier",
+ "src": "9939:1:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32976,
+ "type": "bytes32",
+ "value": "s"
+ },
+ "id": 32991,
+ "name": "Identifier",
+ "src": "9942:1:95"
+ }
+ ],
+ "id": 32992,
+ "name": "FunctionCall",
+ "src": "9894:50:95"
+ }
+ ],
+ "id": 32993,
+ "name": "VariableDeclarationStatement",
+ "src": "9877:67:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_c45a0adec54dfeafd951d08bde16e02838fb6a401a9b327d712b03984a29ae90",
+ "typeString": "literal_string \"Failed to prove ownership of the withdraw key\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 32994,
+ "name": "Identifier",
+ "src": "9950:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "==",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32984,
+ "type": "address",
+ "value": "signer"
+ },
+ "id": 32995,
+ "name": "Identifier",
+ "src": "9958:6:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32970,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 32996,
+ "name": "Identifier",
+ "src": "9968:9:95"
+ }
+ ],
+ "id": 32997,
+ "name": "BinaryOperation",
+ "src": "9958:19:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "4661696c656420746f2070726f7665206f776e657273686970206f6620746865207769746864726177206b6579",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"Failed to prove ownership of the withdraw key\"",
+ "value": "Failed to prove ownership of the withdraw key"
+ },
+ "id": 32998,
+ "name": "Literal",
+ "src": "9979:47:95"
+ }
+ ],
+ "id": 32999,
+ "name": "FunctionCall",
+ "src": "9950:77:95"
+ }
+ ],
+ "id": 33000,
+ "name": "ExpressionStatement",
+ "src": "9950:77:95"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 33002
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "payment",
+ "scope": 33121,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "struct Escrow.EscrowedPayment",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "EscrowedPayment",
+ "referencedDeclaration": 32707,
+ "type": "struct Escrow.EscrowedPayment"
+ },
+ "id": 33001,
+ "name": "UserDefinedTypeName",
+ "src": "10033:15:95"
+ }
+ ],
+ "id": 33002,
+ "name": "VariableDeclaration",
+ "src": "10033:30:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "struct Escrow.EscrowedPayment storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32711,
+ "type": "mapping(address => struct Escrow.EscrowedPayment storage ref)",
+ "value": "escrowedPayments"
+ },
+ "id": 33003,
+ "name": "Identifier",
+ "src": "10066:16:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32970,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 33004,
+ "name": "Identifier",
+ "src": "10083:9:95"
+ }
+ ],
+ "id": 33005,
+ "name": "IndexAccess",
+ "src": "10066:27:95"
+ }
+ ],
+ "id": 33006,
+ "name": "VariableDeclarationStatement",
+ "src": "10033:60:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_11809aee4fa481cc45449f7b434e31fef3c1eb88a8e5ddd898d29492d3ebb4ad",
+ "typeString": "literal_string \"Invalid withdraw value.\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 33007,
+ "name": "Identifier",
+ "src": "10099:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "&&",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "!=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "token",
+ "referencedDeclaration": 32694,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33002,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33008,
+ "name": "Identifier",
+ "src": "10107:7:95"
+ }
+ ],
+ "id": 33009,
+ "name": "MemberAccess",
+ "src": "10107:13:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "address payable",
+ "type_conversion": true
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "type": "type(address)",
+ "value": "address"
+ },
+ "id": 33010,
+ "name": "ElementaryTypeNameExpression",
+ "src": "10124:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 33011,
+ "name": "Literal",
+ "src": "10132:1:95"
+ }
+ ],
+ "id": 33012,
+ "name": "FunctionCall",
+ "src": "10124:10:95"
+ }
+ ],
+ "id": 33013,
+ "name": "BinaryOperation",
+ "src": "10107:27:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": ">",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "value",
+ "referencedDeclaration": 32696,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33002,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33014,
+ "name": "Identifier",
+ "src": "10138:7:95"
+ }
+ ],
+ "id": 33015,
+ "name": "MemberAccess",
+ "src": "10138:13:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 33016,
+ "name": "Literal",
+ "src": "10154:1:95"
+ }
+ ],
+ "id": 33017,
+ "name": "BinaryOperation",
+ "src": "10138:17:95"
+ }
+ ],
+ "id": 33018,
+ "name": "BinaryOperation",
+ "src": "10107:48:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "496e76616c69642077697468647261772076616c75652e",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"Invalid withdraw value.\"",
+ "value": "Invalid withdraw value."
+ },
+ "id": 33019,
+ "name": "Literal",
+ "src": "10157:25:95"
+ }
+ ],
+ "id": 33020,
+ "name": "FunctionCall",
+ "src": "10099:84:95"
+ }
+ ],
+ "id": 33021,
+ "name": "ExpressionStatement",
+ "src": "10099:84:95"
+ },
+ {
+ "attributes": {
+ "falseBody": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": ">",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "minAttestations",
+ "referencedDeclaration": 32706,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33002,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33022,
+ "name": "Identifier",
+ "src": "10375:7:95"
+ }
+ ],
+ "id": 33023,
+ "name": "MemberAccess",
+ "src": "10375:23:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 33024,
+ "name": "Literal",
+ "src": "10401:1:95"
+ }
+ ],
+ "id": 33025,
+ "name": "BinaryOperation",
+ "src": "10375:27:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 33027
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "passedCheck",
+ "scope": 33090,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bool",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bool",
+ "type": "bool"
+ },
+ "id": 33026,
+ "name": "ElementaryTypeName",
+ "src": "10412:4:95"
+ }
+ ],
+ "id": 33027,
+ "name": "VariableDeclaration",
+ "src": "10412:16:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "66616c7365",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "bool",
+ "type": "bool",
+ "value": "false"
+ },
+ "id": 33028,
+ "name": "Literal",
+ "src": "10431:5:95"
+ }
+ ],
+ "id": 33029,
+ "name": "VariableDeclarationStatement",
+ "src": "10412:24:95"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 33033
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "trustedIssuers",
+ "scope": 33090,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "type": "address"
+ },
+ "id": 33031,
+ "name": "ElementaryTypeName",
+ "src": "10444:7:95"
+ }
+ ],
+ "id": 33032,
+ "name": "ArrayTypeName",
+ "src": "10444:9:95"
+ }
+ ],
+ "id": 33033,
+ "name": "VariableDeclaration",
+ "src": "10444:31:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32726,
+ "type": "mapping(address => address[] storage ref)",
+ "value": "trustedIssuersPerPayment"
+ },
+ "id": 33034,
+ "name": "Identifier",
+ "src": "10478:24:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32970,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 33035,
+ "name": "Identifier",
+ "src": "10503:9:95"
+ }
+ ],
+ "id": 33036,
+ "name": "IndexAccess",
+ "src": "10478:35:95"
+ }
+ ],
+ "id": 33037,
+ "name": "VariableDeclarationStatement",
+ "src": "10444:69:95"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 33039
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "attestationsAddress",
+ "scope": 33090,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33038,
+ "name": "ElementaryTypeName",
+ "src": "10521:7:95"
+ }
+ ],
+ "id": 33039,
+ "name": "VariableDeclaration",
+ "src": "10521:27:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "address",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "getAddressForOrDie",
+ "referencedDeclaration": 9249,
+ "type": "function (bytes32) view external returns (address)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 8325,
+ "type": "contract IRegistry",
+ "value": "registryContract"
+ },
+ "id": 33040,
+ "name": "Identifier",
+ "src": "10551:16:95"
+ }
+ ],
+ "id": 33041,
+ "name": "MemberAccess",
+ "src": "10551:35:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 8341,
+ "type": "bytes32",
+ "value": "ATTESTATIONS_REGISTRY_ID"
+ },
+ "id": 33042,
+ "name": "Identifier",
+ "src": "10587:24:95"
+ }
+ ],
+ "id": 33043,
+ "name": "FunctionCall",
+ "src": "10551:61:95"
+ }
+ ],
+ "id": 33044,
+ "name": "VariableDeclarationStatement",
+ "src": "10521:91:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": ">",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33033,
+ "type": "address[] memory",
+ "value": "trustedIssuers"
+ },
+ "id": 33045,
+ "name": "Identifier",
+ "src": "10625:14:95"
+ }
+ ],
+ "id": 33046,
+ "name": "MemberAccess",
+ "src": "10625:21:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 33047,
+ "name": "Literal",
+ "src": "10649:1:95"
+ }
+ ],
+ "id": 33048,
+ "name": "BinaryOperation",
+ "src": "10625:25:95"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33027,
+ "type": "bool",
+ "value": "passedCheck"
+ },
+ "id": 33049,
+ "name": "Identifier",
+ "src": "10662:11:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "||",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "bool",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33323,
+ "type": "function (address,bytes32,address,uint256,address[] memory) view returns (bool)",
+ "value": "hasCompletedV1AttestationsAsTrustedIssuer"
+ },
+ "id": 33050,
+ "name": "Identifier",
+ "src": "10686:41:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33039,
+ "type": "address",
+ "value": "attestationsAddress"
+ },
+ "id": 33051,
+ "name": "Identifier",
+ "src": "10741:19:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "recipientIdentifier",
+ "referencedDeclaration": 32690,
+ "type": "bytes32"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33002,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33052,
+ "name": "Identifier",
+ "src": "10774:7:95"
+ }
+ ],
+ "id": 33053,
+ "name": "MemberAccess",
+ "src": "10774:27:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 33054,
+ "name": "Identifier",
+ "src": "10815:3:95"
+ }
+ ],
+ "id": 33055,
+ "name": "MemberAccess",
+ "src": "10815:10:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "minAttestations",
+ "referencedDeclaration": 32706,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33002,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33056,
+ "name": "Identifier",
+ "src": "10839:7:95"
+ }
+ ],
+ "id": 33057,
+ "name": "MemberAccess",
+ "src": "10839:23:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33033,
+ "type": "address[] memory",
+ "value": "trustedIssuers"
+ },
+ "id": 33058,
+ "name": "Identifier",
+ "src": "10876:14:95"
+ }
+ ],
+ "id": 33059,
+ "name": "FunctionCall",
+ "src": "10686:216:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "bool",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33379,
+ "type": "function (bytes32,address,address[] memory) view returns (bool)",
+ "value": "hasCompletedV2Attestations"
+ },
+ "id": 33060,
+ "name": "Identifier",
+ "src": "10916:26:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "recipientIdentifier",
+ "referencedDeclaration": 32690,
+ "type": "bytes32"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33002,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33061,
+ "name": "Identifier",
+ "src": "10943:7:95"
+ }
+ ],
+ "id": 33062,
+ "name": "MemberAccess",
+ "src": "10943:27:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 33063,
+ "name": "Identifier",
+ "src": "10972:3:95"
+ }
+ ],
+ "id": 33064,
+ "name": "MemberAccess",
+ "src": "10972:10:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33033,
+ "type": "address[] memory",
+ "value": "trustedIssuers"
+ },
+ "id": 33065,
+ "name": "Identifier",
+ "src": "10984:14:95"
+ }
+ ],
+ "id": 33066,
+ "name": "FunctionCall",
+ "src": "10916:83:95"
+ }
+ ],
+ "id": 33067,
+ "name": "BinaryOperation",
+ "src": "10686:313:95"
+ }
+ ],
+ "id": 33068,
+ "name": "Assignment",
+ "src": "10662:337:95"
+ }
+ ],
+ "id": 33069,
+ "name": "ExpressionStatement",
+ "src": "10662:337:95"
+ }
+ ],
+ "id": 33070,
+ "name": "Block",
+ "src": "10652:356:95"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33027,
+ "type": "bool",
+ "value": "passedCheck"
+ },
+ "id": 33071,
+ "name": "Identifier",
+ "src": "11102:11:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "bool",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33272,
+ "type": "function (address,bytes32,address,uint256) view returns (bool)",
+ "value": "hasCompletedV1Attestations"
+ },
+ "id": 33072,
+ "name": "Identifier",
+ "src": "11116:26:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33039,
+ "type": "address",
+ "value": "attestationsAddress"
+ },
+ "id": 33073,
+ "name": "Identifier",
+ "src": "11154:19:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "recipientIdentifier",
+ "referencedDeclaration": 32690,
+ "type": "bytes32"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33002,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33074,
+ "name": "Identifier",
+ "src": "11185:7:95"
+ }
+ ],
+ "id": 33075,
+ "name": "MemberAccess",
+ "src": "11185:27:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 33076,
+ "name": "Identifier",
+ "src": "11224:3:95"
+ }
+ ],
+ "id": 33077,
+ "name": "MemberAccess",
+ "src": "11224:10:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "minAttestations",
+ "referencedDeclaration": 32706,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33002,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33078,
+ "name": "Identifier",
+ "src": "11246:7:95"
+ }
+ ],
+ "id": 33079,
+ "name": "MemberAccess",
+ "src": "11246:23:95"
+ }
+ ],
+ "id": 33080,
+ "name": "FunctionCall",
+ "src": "11116:163:95"
+ }
+ ],
+ "id": 33081,
+ "name": "Assignment",
+ "src": "11102:177:95"
+ }
+ ],
+ "id": 33082,
+ "name": "ExpressionStatement",
+ "src": "11102:177:95"
+ }
+ ],
+ "id": 33083,
+ "name": "Block",
+ "src": "11014:274:95"
+ }
+ ],
+ "id": 33084,
+ "name": "IfStatement",
+ "src": "10621:667:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_ece38e5e23a6d8816b3fc51a2d1cacee649750d4b5f0e5a24bd23dbaab4e6eb9",
+ "typeString": "literal_string \"This account does not have the required attestations to withdraw this payment.\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 33085,
+ "name": "Identifier",
+ "src": "11295:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33027,
+ "type": "bool",
+ "value": "passedCheck"
+ },
+ "id": 33086,
+ "name": "Identifier",
+ "src": "11312:11:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "54686973206163636f756e7420646f6573206e6f74206861766520746865207265717569726564206174746573746174696f6e7320746f2077697468647261772074686973207061796d656e742e",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"This account does not have the required attestations to withdraw this payment.\"",
+ "value": "This account does not have the required attestations to withdraw this payment."
+ },
+ "id": 33087,
+ "name": "Literal",
+ "src": "11333:80:95"
+ }
+ ],
+ "id": 33088,
+ "name": "FunctionCall",
+ "src": "11295:126:95"
+ }
+ ],
+ "id": 33089,
+ "name": "ExpressionStatement",
+ "src": "11295:126:95"
+ }
+ ],
+ "id": 33090,
+ "name": "Block",
+ "src": "10404:1024:95"
+ }
+ ],
+ "id": 33091,
+ "name": "IfStatement",
+ "src": "10371:1057:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33716,
+ "type": "function (address)",
+ "value": "deletePayment"
+ },
+ "id": 33092,
+ "name": "Identifier",
+ "src": "11434:13:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32970,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 33093,
+ "name": "Identifier",
+ "src": "11448:9:95"
+ }
+ ],
+ "id": 33094,
+ "name": "FunctionCall",
+ "src": "11434:24:95"
+ }
+ ],
+ "id": 33095,
+ "name": "ExpressionStatement",
+ "src": "11434:24:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "safeTransfer",
+ "referencedDeclaration": 988,
+ "type": "function (contract IERC20,address,uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "contract ERC20",
+ "type_conversion": true
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 886,
+ "type": "type(contract ERC20)",
+ "value": "ERC20"
+ },
+ "id": 33096,
+ "name": "Identifier",
+ "src": "11465:5:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "token",
+ "referencedDeclaration": 32694,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33002,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33097,
+ "name": "Identifier",
+ "src": "11471:7:95"
+ }
+ ],
+ "id": 33098,
+ "name": "MemberAccess",
+ "src": "11471:13:95"
+ }
+ ],
+ "id": 33099,
+ "name": "FunctionCall",
+ "src": "11465:20:95"
+ }
+ ],
+ "id": 33100,
+ "name": "MemberAccess",
+ "src": "11465:33:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 33101,
+ "name": "Identifier",
+ "src": "11499:3:95"
+ }
+ ],
+ "id": 33102,
+ "name": "MemberAccess",
+ "src": "11499:10:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "value",
+ "referencedDeclaration": 32696,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33002,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33103,
+ "name": "Identifier",
+ "src": "11511:7:95"
+ }
+ ],
+ "id": 33104,
+ "name": "MemberAccess",
+ "src": "11511:13:95"
+ }
+ ],
+ "id": 33105,
+ "name": "FunctionCall",
+ "src": "11465:60:95"
+ }
+ ],
+ "id": 33106,
+ "name": "ExpressionStatement",
+ "src": "11465:60:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32676,
+ "type": "function (bytes32,address,address,uint256,address)",
+ "value": "Withdrawal"
+ },
+ "id": 33107,
+ "name": "Identifier",
+ "src": "11537:10:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "recipientIdentifier",
+ "referencedDeclaration": 32690,
+ "type": "bytes32"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33002,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33108,
+ "name": "Identifier",
+ "src": "11555:7:95"
+ }
+ ],
+ "id": 33109,
+ "name": "MemberAccess",
+ "src": "11555:27:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 33110,
+ "name": "Identifier",
+ "src": "11590:3:95"
+ }
+ ],
+ "id": 33111,
+ "name": "MemberAccess",
+ "src": "11590:10:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "token",
+ "referencedDeclaration": 32694,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33002,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33112,
+ "name": "Identifier",
+ "src": "11608:7:95"
+ }
+ ],
+ "id": 33113,
+ "name": "MemberAccess",
+ "src": "11608:13:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "value",
+ "referencedDeclaration": 32696,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33002,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33114,
+ "name": "Identifier",
+ "src": "11629:7:95"
+ }
+ ],
+ "id": 33115,
+ "name": "MemberAccess",
+ "src": "11629:13:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32970,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 33116,
+ "name": "Identifier",
+ "src": "11650:9:95"
+ }
+ ],
+ "id": 33117,
+ "name": "FunctionCall",
+ "src": "11537:128:95"
+ }
+ ],
+ "id": 33118,
+ "name": "EmitStatement",
+ "src": "11532:133:95"
+ },
+ {
+ "attributes": {
+ "functionReturnParameters": 32982
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "74727565",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "bool",
+ "type": "bool",
+ "value": "true"
+ },
+ "id": 33119,
+ "name": "Literal",
+ "src": "11679:4:95"
+ }
+ ],
+ "id": 33120,
+ "name": "Return",
+ "src": "11672:11:95"
+ }
+ ],
+ "id": 33121,
+ "name": "Block",
+ "src": "9871:1817:95"
+ }
+ ],
+ "id": 33122,
+ "name": "FunctionDefinition",
+ "src": "9752:1936:95"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Revokes tokens for a sender who is redeeming a payment after it has expired.\n@param paymentId The ID for the EscrowedPayment struct that contains all relevant information.\n@dev Throws if 'token' or 'value' is 0.\n@dev Throws if msg.sender is not the sender of payment.\n@dev Throws if redeem time hasn't been reached yet.",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "name": "revoke",
+ "scope": 33717,
+ "stateMutability": "nonpayable",
+ "superFunction": 35983,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "paymentId",
+ "scope": 33189,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33123,
+ "name": "ElementaryTypeName",
+ "src": "12067:7:95"
+ }
+ ],
+ "id": 33124,
+ "name": "VariableDeclaration",
+ "src": "12067:17:95"
+ }
+ ],
+ "id": 33125,
+ "name": "ParameterList",
+ "src": "12066:19:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 33189,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bool",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bool",
+ "type": "bool"
+ },
+ "id": 33128,
+ "name": "ElementaryTypeName",
+ "src": "12117:4:95"
+ }
+ ],
+ "id": 33129,
+ "name": "VariableDeclaration",
+ "src": "12117:4:95"
+ }
+ ],
+ "id": 33130,
+ "name": "ParameterList",
+ "src": "12116:6:95"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 9484,
+ "type": "modifier ()",
+ "value": "nonReentrant"
+ },
+ "id": 33126,
+ "name": "Identifier",
+ "src": "12095:12:95"
+ }
+ ],
+ "id": 33127,
+ "name": "ModifierInvocation",
+ "src": "12095:12:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 33132
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "payment",
+ "scope": 33188,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "struct Escrow.EscrowedPayment",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "EscrowedPayment",
+ "referencedDeclaration": 32707,
+ "type": "struct Escrow.EscrowedPayment"
+ },
+ "id": 33131,
+ "name": "UserDefinedTypeName",
+ "src": "12129:15:95"
+ }
+ ],
+ "id": 33132,
+ "name": "VariableDeclaration",
+ "src": "12129:30:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "struct Escrow.EscrowedPayment storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32711,
+ "type": "mapping(address => struct Escrow.EscrowedPayment storage ref)",
+ "value": "escrowedPayments"
+ },
+ "id": 33133,
+ "name": "Identifier",
+ "src": "12162:16:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33124,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 33134,
+ "name": "Identifier",
+ "src": "12179:9:95"
+ }
+ ],
+ "id": 33135,
+ "name": "IndexAccess",
+ "src": "12162:27:95"
+ }
+ ],
+ "id": 33136,
+ "name": "VariableDeclarationStatement",
+ "src": "12129:60:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_fc802dcb9394f17c341cd1e1408421eb638a5987dce53c143798e997aa690c52",
+ "typeString": "literal_string \"Only sender of payment can attempt to revoke payment.\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 33137,
+ "name": "Identifier",
+ "src": "12195:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "==",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": 32692,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33132,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33138,
+ "name": "Identifier",
+ "src": "12203:7:95"
+ }
+ ],
+ "id": 33139,
+ "name": "MemberAccess",
+ "src": "12203:14:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 33140,
+ "name": "Identifier",
+ "src": "12221:3:95"
+ }
+ ],
+ "id": 33141,
+ "name": "MemberAccess",
+ "src": "12221:10:95"
+ }
+ ],
+ "id": 33142,
+ "name": "BinaryOperation",
+ "src": "12203:28:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "4f6e6c792073656e646572206f66207061796d656e742063616e20617474656d707420746f207265766f6b65207061796d656e742e",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"Only sender of payment can attempt to revoke payment.\"",
+ "value": "Only sender of payment can attempt to revoke payment."
+ },
+ "id": 33143,
+ "name": "Literal",
+ "src": "12233:55:95"
+ }
+ ],
+ "id": 33144,
+ "name": "FunctionCall",
+ "src": "12195:94:95"
+ }
+ ],
+ "id": 33145,
+ "name": "ExpressionStatement",
+ "src": "12195:94:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3dce0518bbb3ef203cda7f1502349e18e2a460bd7dffbaae8e384fa054c55ccf",
+ "typeString": "literal_string \"Transaction not redeemable for sender yet.\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 33146,
+ "name": "Identifier",
+ "src": "12295:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": ">=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42908,
+ "type": "uint256",
+ "value": "now"
+ },
+ "id": 33147,
+ "name": "Identifier",
+ "src": "12310:3:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "timestamp",
+ "referencedDeclaration": 32702,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33132,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33148,
+ "name": "Identifier",
+ "src": "12318:7:95"
+ }
+ ],
+ "id": 33149,
+ "name": "MemberAccess",
+ "src": "12318:17:95"
+ }
+ ],
+ "id": 33150,
+ "name": "MemberAccess",
+ "src": "12318:21:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "expirySeconds",
+ "referencedDeclaration": 32704,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33132,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33151,
+ "name": "Identifier",
+ "src": "12340:7:95"
+ }
+ ],
+ "id": 33152,
+ "name": "MemberAccess",
+ "src": "12340:21:95"
+ }
+ ],
+ "id": 33153,
+ "name": "FunctionCall",
+ "src": "12318:44:95"
+ }
+ ],
+ "id": 33154,
+ "name": "TupleExpression",
+ "src": "12317:46:95"
+ }
+ ],
+ "id": 33155,
+ "name": "BinaryOperation",
+ "src": "12310:53:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "5472616e73616374696f6e206e6f742072656465656d61626c6520666f722073656e646572207965742e",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"Transaction not redeemable for sender yet.\"",
+ "value": "Transaction not redeemable for sender yet."
+ },
+ "id": 33156,
+ "name": "Literal",
+ "src": "12371:44:95"
+ }
+ ],
+ "id": 33157,
+ "name": "FunctionCall",
+ "src": "12295:126:95"
+ }
+ ],
+ "id": 33158,
+ "name": "ExpressionStatement",
+ "src": "12295:126:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33716,
+ "type": "function (address)",
+ "value": "deletePayment"
+ },
+ "id": 33159,
+ "name": "Identifier",
+ "src": "12428:13:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33124,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 33160,
+ "name": "Identifier",
+ "src": "12442:9:95"
+ }
+ ],
+ "id": 33161,
+ "name": "FunctionCall",
+ "src": "12428:24:95"
+ }
+ ],
+ "id": 33162,
+ "name": "ExpressionStatement",
+ "src": "12428:24:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "safeTransfer",
+ "referencedDeclaration": 988,
+ "type": "function (contract IERC20,address,uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "contract ERC20",
+ "type_conversion": true
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 886,
+ "type": "type(contract ERC20)",
+ "value": "ERC20"
+ },
+ "id": 33163,
+ "name": "Identifier",
+ "src": "12459:5:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "token",
+ "referencedDeclaration": 32694,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33132,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33164,
+ "name": "Identifier",
+ "src": "12465:7:95"
+ }
+ ],
+ "id": 33165,
+ "name": "MemberAccess",
+ "src": "12465:13:95"
+ }
+ ],
+ "id": 33166,
+ "name": "FunctionCall",
+ "src": "12459:20:95"
+ }
+ ],
+ "id": 33167,
+ "name": "MemberAccess",
+ "src": "12459:33:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 33168,
+ "name": "Identifier",
+ "src": "12493:3:95"
+ }
+ ],
+ "id": 33169,
+ "name": "MemberAccess",
+ "src": "12493:10:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "value",
+ "referencedDeclaration": 32696,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33132,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33170,
+ "name": "Identifier",
+ "src": "12505:7:95"
+ }
+ ],
+ "id": 33171,
+ "name": "MemberAccess",
+ "src": "12505:13:95"
+ }
+ ],
+ "id": 33172,
+ "name": "FunctionCall",
+ "src": "12459:60:95"
+ }
+ ],
+ "id": 33173,
+ "name": "ExpressionStatement",
+ "src": "12459:60:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32688,
+ "type": "function (bytes32,address,address,uint256,address)",
+ "value": "Revocation"
+ },
+ "id": 33174,
+ "name": "Identifier",
+ "src": "12531:10:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "recipientIdentifier",
+ "referencedDeclaration": 32690,
+ "type": "bytes32"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33132,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33175,
+ "name": "Identifier",
+ "src": "12549:7:95"
+ }
+ ],
+ "id": 33176,
+ "name": "MemberAccess",
+ "src": "12549:27:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": 32692,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33132,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33177,
+ "name": "Identifier",
+ "src": "12584:7:95"
+ }
+ ],
+ "id": 33178,
+ "name": "MemberAccess",
+ "src": "12584:14:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "token",
+ "referencedDeclaration": 32694,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33132,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33179,
+ "name": "Identifier",
+ "src": "12606:7:95"
+ }
+ ],
+ "id": 33180,
+ "name": "MemberAccess",
+ "src": "12606:13:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "value",
+ "referencedDeclaration": 32696,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33132,
+ "type": "struct Escrow.EscrowedPayment memory",
+ "value": "payment"
+ },
+ "id": 33181,
+ "name": "Identifier",
+ "src": "12627:7:95"
+ }
+ ],
+ "id": 33182,
+ "name": "MemberAccess",
+ "src": "12627:13:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33124,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 33183,
+ "name": "Identifier",
+ "src": "12648:9:95"
+ }
+ ],
+ "id": 33184,
+ "name": "FunctionCall",
+ "src": "12531:132:95"
+ }
+ ],
+ "id": 33185,
+ "name": "EmitStatement",
+ "src": "12526:137:95"
+ },
+ {
+ "attributes": {
+ "functionReturnParameters": 33130
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "74727565",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "bool",
+ "type": "bool",
+ "value": "true"
+ },
+ "id": 33186,
+ "name": "Literal",
+ "src": "12677:4:95"
+ }
+ ],
+ "id": 33187,
+ "name": "Return",
+ "src": "12670:11:95"
+ }
+ ],
+ "id": 33188,
+ "name": "Block",
+ "src": "12123:564:95"
+ }
+ ],
+ "id": 33189,
+ "name": "FunctionDefinition",
+ "src": "12051:636:95"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Gets array of all Escrowed Payments received by identifier.\n@param identifier The hash of an identifier of the receiver of the escrowed payment.\n@return An array containing all the IDs of the Escrowed Payments that were received\nby the specified receiver.",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "getReceivedPaymentIds",
+ "scope": 33717,
+ "stateMutability": "view",
+ "superFunction": 35991,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifier",
+ "scope": 33202,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 33190,
+ "name": "ElementaryTypeName",
+ "src": "13013:7:95"
+ }
+ ],
+ "id": 33191,
+ "name": "VariableDeclaration",
+ "src": "13013:18:95"
+ }
+ ],
+ "id": 33192,
+ "name": "ParameterList",
+ "src": "13012:20:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 33202,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33193,
+ "name": "ElementaryTypeName",
+ "src": "13056:7:95"
+ }
+ ],
+ "id": 33194,
+ "name": "ArrayTypeName",
+ "src": "13056:9:95"
+ }
+ ],
+ "id": 33195,
+ "name": "VariableDeclaration",
+ "src": "13056:16:95"
+ }
+ ],
+ "id": 33196,
+ "name": "ParameterList",
+ "src": "13055:18:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "functionReturnParameters": 33196
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32716,
+ "type": "mapping(bytes32 => address[] storage ref)",
+ "value": "receivedPaymentIds"
+ },
+ "id": 33197,
+ "name": "Identifier",
+ "src": "13087:18:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33191,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 33198,
+ "name": "Identifier",
+ "src": "13106:10:95"
+ }
+ ],
+ "id": 33199,
+ "name": "IndexAccess",
+ "src": "13087:30:95"
+ }
+ ],
+ "id": 33200,
+ "name": "Return",
+ "src": "13080:37:95"
+ }
+ ],
+ "id": 33201,
+ "name": "Block",
+ "src": "13074:48:95"
+ }
+ ],
+ "id": 33202,
+ "name": "FunctionDefinition",
+ "src": "12982:140:95"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Gets array of all Escrowed Payment IDs sent by sender.\n@param sender The address of the sender of the escrowed payments.\n@return An array containing all the IDs of the Escrowed Payments that were sent by the\nspecified sender.",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "getSentPaymentIds",
+ "scope": 33717,
+ "stateMutability": "view",
+ "superFunction": 35999,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "sender",
+ "scope": 33215,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33203,
+ "name": "ElementaryTypeName",
+ "src": "13414:7:95"
+ }
+ ],
+ "id": 33204,
+ "name": "VariableDeclaration",
+ "src": "13414:14:95"
+ }
+ ],
+ "id": 33205,
+ "name": "ParameterList",
+ "src": "13413:16:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 33215,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33206,
+ "name": "ElementaryTypeName",
+ "src": "13453:7:95"
+ }
+ ],
+ "id": 33207,
+ "name": "ArrayTypeName",
+ "src": "13453:9:95"
+ }
+ ],
+ "id": 33208,
+ "name": "VariableDeclaration",
+ "src": "13453:16:95"
+ }
+ ],
+ "id": 33209,
+ "name": "ParameterList",
+ "src": "13452:18:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "functionReturnParameters": 33209
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32721,
+ "type": "mapping(address => address[] storage ref)",
+ "value": "sentPaymentIds"
+ },
+ "id": 33210,
+ "name": "Identifier",
+ "src": "13484:14:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33204,
+ "type": "address",
+ "value": "sender"
+ },
+ "id": 33211,
+ "name": "Identifier",
+ "src": "13499:6:95"
+ }
+ ],
+ "id": 33212,
+ "name": "IndexAccess",
+ "src": "13484:22:95"
+ }
+ ],
+ "id": 33213,
+ "name": "Return",
+ "src": "13477:29:95"
+ }
+ ],
+ "id": 33214,
+ "name": "Block",
+ "src": "13471:40:95"
+ }
+ ],
+ "id": 33215,
+ "name": "FunctionDefinition",
+ "src": "13387:124:95"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Gets array of all trusted issuers set per paymentId.\n@param paymentId The ID of the payment to get.\n@return An array of addresses of trusted issuers set for an escrowed payment.",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "getTrustedIssuersPerPayment",
+ "scope": 33717,
+ "stateMutability": "view",
+ "superFunction": 36007,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "paymentId",
+ "scope": 33228,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33216,
+ "name": "ElementaryTypeName",
+ "src": "13761:7:95"
+ }
+ ],
+ "id": 33217,
+ "name": "VariableDeclaration",
+ "src": "13761:17:95"
+ }
+ ],
+ "id": 33218,
+ "name": "ParameterList",
+ "src": "13760:19:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 33228,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33219,
+ "name": "ElementaryTypeName",
+ "src": "13803:7:95"
+ }
+ ],
+ "id": 33220,
+ "name": "ArrayTypeName",
+ "src": "13803:9:95"
+ }
+ ],
+ "id": 33221,
+ "name": "VariableDeclaration",
+ "src": "13803:16:95"
+ }
+ ],
+ "id": 33222,
+ "name": "ParameterList",
+ "src": "13802:18:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "functionReturnParameters": 33222
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32726,
+ "type": "mapping(address => address[] storage ref)",
+ "value": "trustedIssuersPerPayment"
+ },
+ "id": 33223,
+ "name": "Identifier",
+ "src": "13834:24:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33217,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 33224,
+ "name": "Identifier",
+ "src": "13859:9:95"
+ }
+ ],
+ "id": 33225,
+ "name": "IndexAccess",
+ "src": "13834:35:95"
+ }
+ ],
+ "id": 33226,
+ "name": "Return",
+ "src": "13827:42:95"
+ }
+ ],
+ "id": 33227,
+ "name": "Block",
+ "src": "13821:53:95"
+ }
+ ],
+ "id": 33228,
+ "name": "FunctionDefinition",
+ "src": "13724:150:95"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Gets trusted issuers set as default for payments by `transfer` function.\n@return An array of addresses of trusted issuers.",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "getDefaultTrustedIssuers",
+ "scope": 33717,
+ "stateMutability": "view",
+ "superFunction": 36013,
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 33229,
+ "name": "ParameterList",
+ "src": "14061:2:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 33237,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33230,
+ "name": "ElementaryTypeName",
+ "src": "14085:7:95"
+ }
+ ],
+ "id": 33231,
+ "name": "ArrayTypeName",
+ "src": "14085:9:95"
+ }
+ ],
+ "id": 33232,
+ "name": "VariableDeclaration",
+ "src": "14085:16:95"
+ }
+ ],
+ "id": 33233,
+ "name": "ParameterList",
+ "src": "14084:18:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "functionReturnParameters": 33233
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32729,
+ "type": "address[] storage ref",
+ "value": "defaultTrustedIssuers"
+ },
+ "id": 33234,
+ "name": "Identifier",
+ "src": "14116:21:95"
+ }
+ ],
+ "id": 33235,
+ "name": "Return",
+ "src": "14109:28:95"
+ }
+ ],
+ "id": 33236,
+ "name": "Block",
+ "src": "14103:39:95"
+ }
+ ],
+ "id": 33237,
+ "name": "FunctionDefinition",
+ "src": "14028:114:95"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Checks if account has completed minAttestations for identifier in Attestations.sol.\n@param attestationsAddress The address of Attestations.sol.\n@param identifier The hash of an identifier for which to look up attestations.\n@param account The account for which to look up attestations.\n@param minAttestations The minimum number of attestations to have completed.\n@return Whether or not attestations in Attestations.sol\n exceeds minAttestations for (identifier, account).",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "hasCompletedV1Attestations",
+ "scope": 33717,
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "attestationsAddress",
+ "scope": 33272,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33238,
+ "name": "ElementaryTypeName",
+ "src": "14711:7:95"
+ }
+ ],
+ "id": 33239,
+ "name": "VariableDeclaration",
+ "src": "14711:27:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifier",
+ "scope": 33272,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 33240,
+ "name": "ElementaryTypeName",
+ "src": "14744:7:95"
+ }
+ ],
+ "id": 33241,
+ "name": "VariableDeclaration",
+ "src": "14744:18:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "account",
+ "scope": 33272,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33242,
+ "name": "ElementaryTypeName",
+ "src": "14768:7:95"
+ }
+ ],
+ "id": 33243,
+ "name": "VariableDeclaration",
+ "src": "14768:15:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "minAttestations",
+ "scope": 33272,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 33244,
+ "name": "ElementaryTypeName",
+ "src": "14789:7:95"
+ }
+ ],
+ "id": 33245,
+ "name": "VariableDeclaration",
+ "src": "14789:23:95"
+ }
+ ],
+ "id": 33246,
+ "name": "ParameterList",
+ "src": "14705:111:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 33272,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bool",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bool",
+ "type": "bool"
+ },
+ "id": 33247,
+ "name": "ElementaryTypeName",
+ "src": "14840:4:95"
+ }
+ ],
+ "id": 33248,
+ "name": "VariableDeclaration",
+ "src": "14840:4:95"
+ }
+ ],
+ "id": 33249,
+ "name": "ParameterList",
+ "src": "14839:6:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 33251
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "attestations",
+ "scope": 33271,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "contract IAttestations",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "IAttestations",
+ "referencedDeclaration": 35924,
+ "type": "contract IAttestations"
+ },
+ "id": 33250,
+ "name": "UserDefinedTypeName",
+ "src": "14852:13:95"
+ }
+ ],
+ "id": 33251,
+ "name": "VariableDeclaration",
+ "src": "14852:26:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "contract IAttestations",
+ "type_conversion": true
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 35924,
+ "type": "type(contract IAttestations)",
+ "value": "IAttestations"
+ },
+ "id": 33252,
+ "name": "Identifier",
+ "src": "14881:13:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33239,
+ "type": "address",
+ "value": "attestationsAddress"
+ },
+ "id": 33253,
+ "name": "Identifier",
+ "src": "14895:19:95"
+ }
+ ],
+ "id": 33254,
+ "name": "FunctionCall",
+ "src": "14881:34:95"
+ }
+ ],
+ "id": 33255,
+ "name": "VariableDeclarationStatement",
+ "src": "14852:63:95"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 33257,
+ null
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "completedAttestations",
+ "scope": 33271,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint64",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint64",
+ "type": "uint64"
+ },
+ "id": 33256,
+ "name": "ElementaryTypeName",
+ "src": "14922:6:95"
+ }
+ ],
+ "id": 33257,
+ "name": "VariableDeclaration",
+ "src": "14922:28:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple(uint32,uint32)",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "getAttestationStats",
+ "referencedDeclaration": 35806,
+ "type": "function (bytes32,address) view external returns (uint32,uint32)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33251,
+ "type": "contract IAttestations",
+ "value": "attestations"
+ },
+ "id": 33258,
+ "name": "Identifier",
+ "src": "14956:12:95"
+ }
+ ],
+ "id": 33259,
+ "name": "MemberAccess",
+ "src": "14956:32:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33241,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 33260,
+ "name": "Identifier",
+ "src": "14989:10:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33243,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 33261,
+ "name": "Identifier",
+ "src": "15001:7:95"
+ }
+ ],
+ "id": 33262,
+ "name": "FunctionCall",
+ "src": "14956:53:95"
+ }
+ ],
+ "id": 33263,
+ "name": "VariableDeclarationStatement",
+ "src": "14921:88:95"
+ },
+ {
+ "attributes": {
+ "functionReturnParameters": 33249
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": ">=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": true
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "type": "type(uint256)",
+ "value": "uint256"
+ },
+ "id": 33264,
+ "name": "ElementaryTypeNameExpression",
+ "src": "15023:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33257,
+ "type": "uint64",
+ "value": "completedAttestations"
+ },
+ "id": 33265,
+ "name": "Identifier",
+ "src": "15031:21:95"
+ }
+ ],
+ "id": 33266,
+ "name": "FunctionCall",
+ "src": "15023:30:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33245,
+ "type": "uint256",
+ "value": "minAttestations"
+ },
+ "id": 33267,
+ "name": "Identifier",
+ "src": "15057:15:95"
+ }
+ ],
+ "id": 33268,
+ "name": "BinaryOperation",
+ "src": "15023:49:95"
+ }
+ ],
+ "id": 33269,
+ "name": "TupleExpression",
+ "src": "15022:51:95"
+ }
+ ],
+ "id": 33270,
+ "name": "Return",
+ "src": "15015:58:95"
+ }
+ ],
+ "id": 33271,
+ "name": "Block",
+ "src": "14846:232:95"
+ }
+ ],
+ "id": 33272,
+ "name": "FunctionDefinition",
+ "src": "14670:408:95"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Helper function that checks if one of the trustedIssuers is the old Attestations.sol\n contract and applies the escrow V1 check against minAttestations.\n@param attestationsAddress The address of Attestations.sol.\n@param identifier The hash of an identifier for which to look up attestations.\n@param account The account for which to look up attestations.\n@param minAttestations The minimum number of attestations to have completed.\n@param trustedIssuers The trustedIssuer addresses to search through.\n@return Whether or not a trustedIssuer is Attestations.sol & attestations\n exceed minAttestations for (identifier, account).",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "hasCompletedV1AttestationsAsTrustedIssuer",
+ "scope": 33717,
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "attestationsAddress",
+ "scope": 33323,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33273,
+ "name": "ElementaryTypeName",
+ "src": "15831:7:95"
+ }
+ ],
+ "id": 33274,
+ "name": "VariableDeclaration",
+ "src": "15831:27:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifier",
+ "scope": 33323,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 33275,
+ "name": "ElementaryTypeName",
+ "src": "15864:7:95"
+ }
+ ],
+ "id": 33276,
+ "name": "VariableDeclaration",
+ "src": "15864:18:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "account",
+ "scope": 33323,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33277,
+ "name": "ElementaryTypeName",
+ "src": "15888:7:95"
+ }
+ ],
+ "id": 33278,
+ "name": "VariableDeclaration",
+ "src": "15888:15:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "minAttestations",
+ "scope": 33323,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 33279,
+ "name": "ElementaryTypeName",
+ "src": "15909:7:95"
+ }
+ ],
+ "id": 33280,
+ "name": "VariableDeclaration",
+ "src": "15909:23:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "trustedIssuers",
+ "scope": 33323,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33281,
+ "name": "ElementaryTypeName",
+ "src": "15938:7:95"
+ }
+ ],
+ "id": 33282,
+ "name": "ArrayTypeName",
+ "src": "15938:9:95"
+ }
+ ],
+ "id": 33283,
+ "name": "VariableDeclaration",
+ "src": "15938:31:95"
+ }
+ ],
+ "id": 33284,
+ "name": "ParameterList",
+ "src": "15825:148:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 33323,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bool",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bool",
+ "type": "bool"
+ },
+ "id": 33285,
+ "name": "ElementaryTypeName",
+ "src": "15997:4:95"
+ }
+ ],
+ "id": 33286,
+ "name": "VariableDeclaration",
+ "src": "15997:4:95"
+ }
+ ],
+ "id": 33287,
+ "name": "ParameterList",
+ "src": "15996:6:95"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 33289
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "i",
+ "scope": 33319,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 33288,
+ "name": "ElementaryTypeName",
+ "src": "16014:7:95"
+ }
+ ],
+ "id": 33289,
+ "name": "VariableDeclaration",
+ "src": "16014:9:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 33290,
+ "name": "Literal",
+ "src": "16026:1:95"
+ }
+ ],
+ "id": 33291,
+ "name": "VariableDeclarationStatement",
+ "src": "16014:13:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "<",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33289,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 33292,
+ "name": "Identifier",
+ "src": "16029:1:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33283,
+ "type": "address[] memory",
+ "value": "trustedIssuers"
+ },
+ "id": 33293,
+ "name": "Identifier",
+ "src": "16033:14:95"
+ }
+ ],
+ "id": 33294,
+ "name": "MemberAccess",
+ "src": "16033:21:95"
+ }
+ ],
+ "id": 33295,
+ "name": "BinaryOperation",
+ "src": "16029:25:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33289,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 33296,
+ "name": "Identifier",
+ "src": "16056:1:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33289,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 33297,
+ "name": "Identifier",
+ "src": "16060:1:95"
+ }
+ ],
+ "id": 33298,
+ "name": "MemberAccess",
+ "src": "16060:5:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 33299,
+ "name": "Literal",
+ "src": "16066:1:95"
+ }
+ ],
+ "id": 33300,
+ "name": "FunctionCall",
+ "src": "16060:8:95"
+ }
+ ],
+ "id": 33301,
+ "name": "Assignment",
+ "src": "16056:12:95"
+ }
+ ],
+ "id": 33302,
+ "name": "ExpressionStatement",
+ "src": "16056:12:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "falseBody": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "!=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33283,
+ "type": "address[] memory",
+ "value": "trustedIssuers"
+ },
+ "id": 33303,
+ "name": "Identifier",
+ "src": "16082:14:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33289,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 33304,
+ "name": "Identifier",
+ "src": "16097:1:95"
+ }
+ ],
+ "id": 33305,
+ "name": "IndexAccess",
+ "src": "16082:17:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33274,
+ "type": "address",
+ "value": "attestationsAddress"
+ },
+ "id": 33306,
+ "name": "Identifier",
+ "src": "16103:19:95"
+ }
+ ],
+ "id": 33307,
+ "name": "BinaryOperation",
+ "src": "16082:40:95"
+ },
+ {
+ "children": [
+ {
+ "id": 33308,
+ "name": "Continue",
+ "src": "16134:8:95"
+ }
+ ],
+ "id": 33309,
+ "name": "Block",
+ "src": "16124:27:95"
+ }
+ ],
+ "id": 33310,
+ "name": "IfStatement",
+ "src": "16078:73:95"
+ },
+ {
+ "attributes": {
+ "functionReturnParameters": 33287
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "bool",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33272,
+ "type": "function (address,bytes32,address,uint256) view returns (bool)",
+ "value": "hasCompletedV1Attestations"
+ },
+ "id": 33311,
+ "name": "Identifier",
+ "src": "16262:26:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33274,
+ "type": "address",
+ "value": "attestationsAddress"
+ },
+ "id": 33312,
+ "name": "Identifier",
+ "src": "16289:19:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33276,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 33313,
+ "name": "Identifier",
+ "src": "16310:10:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33278,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 33314,
+ "name": "Identifier",
+ "src": "16322:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33280,
+ "type": "uint256",
+ "value": "minAttestations"
+ },
+ "id": 33315,
+ "name": "Identifier",
+ "src": "16331:15:95"
+ }
+ ],
+ "id": 33316,
+ "name": "FunctionCall",
+ "src": "16262:85:95"
+ }
+ ],
+ "id": 33317,
+ "name": "Return",
+ "src": "16255:92:95"
+ }
+ ],
+ "id": 33318,
+ "name": "Block",
+ "src": "16070:284:95"
+ }
+ ],
+ "id": 33319,
+ "name": "ForStatement",
+ "src": "16009:345:95"
+ },
+ {
+ "attributes": {
+ "functionReturnParameters": 33287
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "66616c7365",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "bool",
+ "type": "bool",
+ "value": "false"
+ },
+ "id": 33320,
+ "name": "Literal",
+ "src": "16366:5:95"
+ }
+ ],
+ "id": 33321,
+ "name": "Return",
+ "src": "16359:12:95"
+ }
+ ],
+ "id": 33322,
+ "name": "Block",
+ "src": "16003:373:95"
+ }
+ ],
+ "id": 33323,
+ "name": "FunctionDefinition",
+ "src": "15775:601:95"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Checks if there are attestations for account <-> identifier from\n any of trustedIssuers in FederatedAttestations.sol.\n@param identifier The hash of an identifier for which to look up attestations.\n@param account The account for which to look up attestations.\n@param trustedIssuers Issuer addresses whose attestations to trust.\n@return Whether or not attestations exist in FederatedAttestations.sol\n for (identifier, account).",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "hasCompletedV2Attestations",
+ "scope": 33717,
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifier",
+ "scope": 33379,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 33324,
+ "name": "ElementaryTypeName",
+ "src": "16908:7:95"
+ }
+ ],
+ "id": 33325,
+ "name": "VariableDeclaration",
+ "src": "16908:18:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "account",
+ "scope": 33379,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33326,
+ "name": "ElementaryTypeName",
+ "src": "16932:7:95"
+ }
+ ],
+ "id": 33327,
+ "name": "VariableDeclaration",
+ "src": "16932:15:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "trustedIssuers",
+ "scope": 33379,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33328,
+ "name": "ElementaryTypeName",
+ "src": "16953:7:95"
+ }
+ ],
+ "id": 33329,
+ "name": "ArrayTypeName",
+ "src": "16953:9:95"
+ }
+ ],
+ "id": 33330,
+ "name": "VariableDeclaration",
+ "src": "16953:31:95"
+ }
+ ],
+ "id": 33331,
+ "name": "ParameterList",
+ "src": "16902:86:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 33379,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bool",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bool",
+ "type": "bool"
+ },
+ "id": 33332,
+ "name": "ElementaryTypeName",
+ "src": "17012:4:95"
+ }
+ ],
+ "id": 33333,
+ "name": "VariableDeclaration",
+ "src": "17012:4:95"
+ }
+ ],
+ "id": 33334,
+ "name": "ParameterList",
+ "src": "17011:6:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 33336
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "federatedAttestations",
+ "scope": 33378,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "contract IFederatedAttestations",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "IFederatedAttestations",
+ "referencedDeclaration": 36153,
+ "type": "contract IFederatedAttestations"
+ },
+ "id": 33335,
+ "name": "UserDefinedTypeName",
+ "src": "17078:22:95"
+ }
+ ],
+ "id": 33336,
+ "name": "VariableDeclaration",
+ "src": "17078:44:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "arguments": [
+ null
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "contract IFederatedAttestations",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ null
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 8648,
+ "type": "function () view returns (contract IFederatedAttestations)",
+ "value": "getFederatedAttestations"
+ },
+ "id": 33337,
+ "name": "Identifier",
+ "src": "17125:24:95"
+ }
+ ],
+ "id": 33338,
+ "name": "FunctionCall",
+ "src": "17125:26:95"
+ }
+ ],
+ "id": 33339,
+ "name": "VariableDeclarationStatement",
+ "src": "17078:73:95"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ null,
+ 33343,
+ null,
+ null,
+ null
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "accounts",
+ "scope": 33378,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "type": "address"
+ },
+ "id": 33341,
+ "name": "ElementaryTypeName",
+ "src": "17160:7:95"
+ }
+ ],
+ "id": 33342,
+ "name": "ArrayTypeName",
+ "src": "17160:9:95"
+ }
+ ],
+ "id": 33343,
+ "name": "VariableDeclaration",
+ "src": "17160:25:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple(uint256[] memory,address[] memory,address[] memory,uint64[] memory,uint64[] memory)",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "lookupAttestations",
+ "referencedDeclaration": 36104,
+ "type": "function (bytes32,address[] memory) view external returns (uint256[] memory,address[] memory,address[] memory,uint64[] memory,uint64[] memory)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33336,
+ "type": "contract IFederatedAttestations",
+ "value": "federatedAttestations"
+ },
+ "id": 33344,
+ "name": "Identifier",
+ "src": "17195:21:95"
+ }
+ ],
+ "id": 33345,
+ "name": "MemberAccess",
+ "src": "17195:40:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33325,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 33346,
+ "name": "Identifier",
+ "src": "17243:10:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33330,
+ "type": "address[] memory",
+ "value": "trustedIssuers"
+ },
+ "id": 33347,
+ "name": "Identifier",
+ "src": "17261:14:95"
+ }
+ ],
+ "id": 33348,
+ "name": "FunctionCall",
+ "src": "17195:86:95"
+ }
+ ],
+ "id": 33349,
+ "name": "VariableDeclarationStatement",
+ "src": "17157:124:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 33351
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "i",
+ "scope": 33375,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 33350,
+ "name": "ElementaryTypeName",
+ "src": "17368:7:95"
+ }
+ ],
+ "id": 33351,
+ "name": "VariableDeclaration",
+ "src": "17368:9:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 33352,
+ "name": "Literal",
+ "src": "17380:1:95"
+ }
+ ],
+ "id": 33353,
+ "name": "VariableDeclarationStatement",
+ "src": "17368:13:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "<",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33351,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 33354,
+ "name": "Identifier",
+ "src": "17383:1:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33343,
+ "type": "address[] memory",
+ "value": "accounts"
+ },
+ "id": 33355,
+ "name": "Identifier",
+ "src": "17387:8:95"
+ }
+ ],
+ "id": 33356,
+ "name": "MemberAccess",
+ "src": "17387:15:95"
+ }
+ ],
+ "id": 33357,
+ "name": "BinaryOperation",
+ "src": "17383:19:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33351,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 33358,
+ "name": "Identifier",
+ "src": "17404:1:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33351,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 33359,
+ "name": "Identifier",
+ "src": "17408:1:95"
+ }
+ ],
+ "id": 33360,
+ "name": "MemberAccess",
+ "src": "17408:5:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 33361,
+ "name": "Literal",
+ "src": "17414:1:95"
+ }
+ ],
+ "id": 33362,
+ "name": "FunctionCall",
+ "src": "17408:8:95"
+ }
+ ],
+ "id": 33363,
+ "name": "Assignment",
+ "src": "17404:12:95"
+ }
+ ],
+ "id": 33364,
+ "name": "ExpressionStatement",
+ "src": "17404:12:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "falseBody": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "==",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33343,
+ "type": "address[] memory",
+ "value": "accounts"
+ },
+ "id": 33365,
+ "name": "Identifier",
+ "src": "17430:8:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33351,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 33366,
+ "name": "Identifier",
+ "src": "17439:1:95"
+ }
+ ],
+ "id": 33367,
+ "name": "IndexAccess",
+ "src": "17430:11:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33327,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 33368,
+ "name": "Identifier",
+ "src": "17445:7:95"
+ }
+ ],
+ "id": 33369,
+ "name": "BinaryOperation",
+ "src": "17430:22:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "functionReturnParameters": 33334
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "74727565",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "bool",
+ "type": "bool",
+ "value": "true"
+ },
+ "id": 33370,
+ "name": "Literal",
+ "src": "17471:4:95"
+ }
+ ],
+ "id": 33371,
+ "name": "Return",
+ "src": "17464:11:95"
+ }
+ ],
+ "id": 33372,
+ "name": "Block",
+ "src": "17454:30:95"
+ }
+ ],
+ "id": 33373,
+ "name": "IfStatement",
+ "src": "17426:58:95"
+ }
+ ],
+ "id": 33374,
+ "name": "Block",
+ "src": "17418:72:95"
+ }
+ ],
+ "id": 33375,
+ "name": "ForStatement",
+ "src": "17363:127:95"
+ },
+ {
+ "attributes": {
+ "functionReturnParameters": 33334
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "66616c7365",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "bool",
+ "type": "bool",
+ "value": "false"
+ },
+ "id": 33376,
+ "name": "Literal",
+ "src": "17502:5:95"
+ }
+ ],
+ "id": 33377,
+ "name": "Return",
+ "src": "17495:12:95"
+ }
+ ],
+ "id": 33378,
+ "name": "Block",
+ "src": "17018:494:95"
+ }
+ ],
+ "id": 33379,
+ "name": "FunctionDefinition",
+ "src": "16867:645:95"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Helper function for `transferWithTrustedIssuers` and `transfer`, to\n enable backwards-compatible function signature for `transfer`,\n and since `transfer` cannot directly call `transferWithTrustedIssuers`\n due to reentrancy guard.\n@param identifier The hashed identifier of a user to transfer to.\n@param token The token to be transferred.\n@param value The amount to be transferred.\n@param expirySeconds The number of seconds before the sender can revoke the payment.\n@param paymentId The address of the temporary wallet associated with this payment. Users must\n prove ownership of the corresponding private key to withdraw from escrow.\n@param minAttestations The min number of attestations required to withdraw the payment.\n@param trustedIssuers Array of issuers whose attestations in FederatedAttestations.sol\n will be accepted to prove ownership over an identifier.\n@return True if transfer succeeded.\n@dev Throws if 'token' or 'value' is 0.\n@dev Throws if identifier is null and minAttestations > 0.\n@dev Throws if minAttestations == 0 but trustedIssuers are provided.\n@dev msg.sender needs to have already approved this contract to transfer.",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "_transfer",
+ "scope": 33717,
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "private"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifier",
+ "scope": 33602,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 33380,
+ "name": "ElementaryTypeName",
+ "src": "18810:7:95"
+ }
+ ],
+ "id": 33381,
+ "name": "VariableDeclaration",
+ "src": "18810:18:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "token",
+ "scope": 33602,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33382,
+ "name": "ElementaryTypeName",
+ "src": "18834:7:95"
+ }
+ ],
+ "id": 33383,
+ "name": "VariableDeclaration",
+ "src": "18834:13:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "value",
+ "scope": 33602,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 33384,
+ "name": "ElementaryTypeName",
+ "src": "18853:7:95"
+ }
+ ],
+ "id": 33385,
+ "name": "VariableDeclaration",
+ "src": "18853:13:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "expirySeconds",
+ "scope": 33602,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 33386,
+ "name": "ElementaryTypeName",
+ "src": "18872:7:95"
+ }
+ ],
+ "id": 33387,
+ "name": "VariableDeclaration",
+ "src": "18872:21:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "paymentId",
+ "scope": 33602,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33388,
+ "name": "ElementaryTypeName",
+ "src": "18899:7:95"
+ }
+ ],
+ "id": 33389,
+ "name": "VariableDeclaration",
+ "src": "18899:17:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "minAttestations",
+ "scope": 33602,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 33390,
+ "name": "ElementaryTypeName",
+ "src": "18922:7:95"
+ }
+ ],
+ "id": 33391,
+ "name": "VariableDeclaration",
+ "src": "18922:23:95"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "trustedIssuers",
+ "scope": 33602,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33392,
+ "name": "ElementaryTypeName",
+ "src": "18951:7:95"
+ }
+ ],
+ "id": 33393,
+ "name": "ArrayTypeName",
+ "src": "18951:9:95"
+ }
+ ],
+ "id": 33394,
+ "name": "VariableDeclaration",
+ "src": "18951:31:95"
+ }
+ ],
+ "id": 33395,
+ "name": "ParameterList",
+ "src": "18804:182:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 33602,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bool",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bool",
+ "type": "bool"
+ },
+ "id": 33396,
+ "name": "ElementaryTypeName",
+ "src": "19004:4:95"
+ }
+ ],
+ "id": 33397,
+ "name": "VariableDeclaration",
+ "src": "19004:4:95"
+ }
+ ],
+ "id": 33398,
+ "name": "ParameterList",
+ "src": "19003:6:95"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_583aa275ae7ba8f6fa1167872cbe2d9795e424de512aa58b1047865cfae1e4c3",
+ "typeString": "literal_string \"Invalid transfer inputs.\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 33399,
+ "name": "Identifier",
+ "src": "19016:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "&&",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "&&",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "!=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33383,
+ "type": "address",
+ "value": "token"
+ },
+ "id": 33400,
+ "name": "Identifier",
+ "src": "19024:5:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "address payable",
+ "type_conversion": true
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "type": "type(address)",
+ "value": "address"
+ },
+ "id": 33401,
+ "name": "ElementaryTypeNameExpression",
+ "src": "19033:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 33402,
+ "name": "Literal",
+ "src": "19041:1:95"
+ }
+ ],
+ "id": 33403,
+ "name": "FunctionCall",
+ "src": "19033:10:95"
+ }
+ ],
+ "id": 33404,
+ "name": "BinaryOperation",
+ "src": "19024:19:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": ">",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33385,
+ "type": "uint256",
+ "value": "value"
+ },
+ "id": 33405,
+ "name": "Identifier",
+ "src": "19047:5:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 33406,
+ "name": "Literal",
+ "src": "19055:1:95"
+ }
+ ],
+ "id": 33407,
+ "name": "BinaryOperation",
+ "src": "19047:9:95"
+ }
+ ],
+ "id": 33408,
+ "name": "BinaryOperation",
+ "src": "19024:32:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": ">",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33387,
+ "type": "uint256",
+ "value": "expirySeconds"
+ },
+ "id": 33409,
+ "name": "Identifier",
+ "src": "19060:13:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 33410,
+ "name": "Literal",
+ "src": "19076:1:95"
+ }
+ ],
+ "id": 33411,
+ "name": "BinaryOperation",
+ "src": "19060:17:95"
+ }
+ ],
+ "id": 33412,
+ "name": "BinaryOperation",
+ "src": "19024:53:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "496e76616c6964207472616e7366657220696e707574732e",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"Invalid transfer inputs.\"",
+ "value": "Invalid transfer inputs."
+ },
+ "id": 33413,
+ "name": "Literal",
+ "src": "19079:26:95"
+ }
+ ],
+ "id": 33414,
+ "name": "FunctionCall",
+ "src": "19016:90:95"
+ }
+ ],
+ "id": 33415,
+ "name": "ExpressionStatement",
+ "src": "19016:90:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_591a98fda7af4459f299901f71ecb60bd524599b68bd3d6e78a88580fbbaac67",
+ "typeString": "literal_string \"Invalid privacy inputs: Can't require attestations if no identifier\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 33416,
+ "name": "Identifier",
+ "src": "19112:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "!",
+ "prefix": true,
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "&&",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "==",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33381,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 33417,
+ "name": "Identifier",
+ "src": "19129:10:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 33418,
+ "name": "Literal",
+ "src": "19143:1:95"
+ }
+ ],
+ "id": 33419,
+ "name": "BinaryOperation",
+ "src": "19129:15:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": ">",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33391,
+ "type": "uint256",
+ "value": "minAttestations"
+ },
+ "id": 33420,
+ "name": "Identifier",
+ "src": "19148:15:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 33421,
+ "name": "Literal",
+ "src": "19166:1:95"
+ }
+ ],
+ "id": 33422,
+ "name": "BinaryOperation",
+ "src": "19148:19:95"
+ }
+ ],
+ "id": 33423,
+ "name": "BinaryOperation",
+ "src": "19129:38:95"
+ }
+ ],
+ "id": 33424,
+ "name": "TupleExpression",
+ "src": "19128:40:95"
+ }
+ ],
+ "id": 33425,
+ "name": "UnaryOperation",
+ "src": "19127:41:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "496e76616c6964207072697661637920696e707574733a2043616e27742072657175697265206174746573746174696f6e73206966206e6f206964656e746966696572",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"Invalid privacy inputs: Can't require attestations if no identifier\"",
+ "value": "Invalid privacy inputs: Can't require attestations if no identifier"
+ },
+ "id": 33426,
+ "name": "Literal",
+ "src": "19176:69:95"
+ }
+ ],
+ "id": 33427,
+ "name": "FunctionCall",
+ "src": "19112:139:95"
+ }
+ ],
+ "id": 33428,
+ "name": "ExpressionStatement",
+ "src": "19112:139:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_dd56c1021d3ad1f72d3fe19e61cd2729a5a3858943bea47977ab8075f182d030",
+ "typeString": "literal_string \"trustedIssuers may only be set when attestations are required\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 33429,
+ "name": "Identifier",
+ "src": "19500:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "!",
+ "prefix": true,
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "&&",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "==",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33391,
+ "type": "uint256",
+ "value": "minAttestations"
+ },
+ "id": 33430,
+ "name": "Identifier",
+ "src": "19517:15:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 33431,
+ "name": "Literal",
+ "src": "19536:1:95"
+ }
+ ],
+ "id": 33432,
+ "name": "BinaryOperation",
+ "src": "19517:20:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": ">",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33394,
+ "type": "address[] memory",
+ "value": "trustedIssuers"
+ },
+ "id": 33433,
+ "name": "Identifier",
+ "src": "19541:14:95"
+ }
+ ],
+ "id": 33434,
+ "name": "MemberAccess",
+ "src": "19541:21:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 33435,
+ "name": "Literal",
+ "src": "19565:1:95"
+ }
+ ],
+ "id": 33436,
+ "name": "BinaryOperation",
+ "src": "19541:25:95"
+ }
+ ],
+ "id": 33437,
+ "name": "BinaryOperation",
+ "src": "19517:49:95"
+ }
+ ],
+ "id": 33438,
+ "name": "TupleExpression",
+ "src": "19516:51:95"
+ }
+ ],
+ "id": 33439,
+ "name": "UnaryOperation",
+ "src": "19515:52:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "7472757374656449737375657273206d6179206f6e6c7920626520736574207768656e206174746573746174696f6e7320617265207265717569726564",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"trustedIssuers may only be set when attestations are required\"",
+ "value": "trustedIssuers may only be set when attestations are required"
+ },
+ "id": 33440,
+ "name": "Literal",
+ "src": "19575:63:95"
+ }
+ ],
+ "id": 33441,
+ "name": "FunctionCall",
+ "src": "19500:144:95"
+ }
+ ],
+ "id": 33442,
+ "name": "ExpressionStatement",
+ "src": "19500:144:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_fdbe1943f226c4c9a0fb6a61992b3e2c525655ffd8bfed7ce5291460112a7920",
+ "typeString": "literal_string \"Too many trustedIssuers provided\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 33443,
+ "name": "Identifier",
+ "src": "19783:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "<=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33394,
+ "type": "address[] memory",
+ "value": "trustedIssuers"
+ },
+ "id": 33444,
+ "name": "Identifier",
+ "src": "19798:14:95"
+ }
+ ],
+ "id": 33445,
+ "name": "MemberAccess",
+ "src": "19798:21:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32732,
+ "type": "uint256",
+ "value": "MAX_TRUSTED_ISSUERS_PER_PAYMENT"
+ },
+ "id": 33446,
+ "name": "Identifier",
+ "src": "19823:31:95"
+ }
+ ],
+ "id": 33447,
+ "name": "BinaryOperation",
+ "src": "19798:56:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "546f6f206d616e792074727573746564497373756572732070726f7669646564",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"Too many trustedIssuers provided\"",
+ "value": "Too many trustedIssuers provided"
+ },
+ "id": 33448,
+ "name": "Literal",
+ "src": "19862:34:95"
+ }
+ ],
+ "id": 33449,
+ "name": "FunctionCall",
+ "src": "19783:119:95"
+ }
+ ],
+ "id": 33450,
+ "name": "ExpressionStatement",
+ "src": "19783:119:95"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 33452
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "attestations",
+ "scope": 33601,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "contract IAttestations",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "IAttestations",
+ "referencedDeclaration": 35924,
+ "type": "contract IAttestations"
+ },
+ "id": 33451,
+ "name": "UserDefinedTypeName",
+ "src": "19909:13:95"
+ }
+ ],
+ "id": 33452,
+ "name": "VariableDeclaration",
+ "src": "19909:26:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "arguments": [
+ null
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "contract IAttestations",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ null
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 8561,
+ "type": "function () view returns (contract IAttestations)",
+ "value": "getAttestations"
+ },
+ "id": 33453,
+ "name": "Identifier",
+ "src": "19938:15:95"
+ }
+ ],
+ "id": 33454,
+ "name": "FunctionCall",
+ "src": "19938:17:95"
+ }
+ ],
+ "id": 33455,
+ "name": "VariableDeclarationStatement",
+ "src": "19909:46:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_cd60604f4053d5b11b86362654f05f91294f55fae9a09ec791fba1339e4302ba",
+ "typeString": "literal_string \"minAttestations larger than limit\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 33456,
+ "name": "Identifier",
+ "src": "19961:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "<=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33391,
+ "type": "uint256",
+ "value": "minAttestations"
+ },
+ "id": 33457,
+ "name": "Identifier",
+ "src": "19976:15:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "arguments": [
+ null
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ null
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "getMaxAttestations",
+ "referencedDeclaration": 35869,
+ "type": "function () view external returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33452,
+ "type": "contract IAttestations",
+ "value": "attestations"
+ },
+ "id": 33458,
+ "name": "Identifier",
+ "src": "19995:12:95"
+ }
+ ],
+ "id": 33459,
+ "name": "MemberAccess",
+ "src": "19995:31:95"
+ }
+ ],
+ "id": 33460,
+ "name": "FunctionCall",
+ "src": "19995:33:95"
+ }
+ ],
+ "id": 33461,
+ "name": "BinaryOperation",
+ "src": "19976:52:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "6d696e4174746573746174696f6e73206c6172676572207468616e206c696d6974",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"minAttestations larger than limit\"",
+ "value": "minAttestations larger than limit"
+ },
+ "id": 33462,
+ "name": "Literal",
+ "src": "20036:35:95"
+ }
+ ],
+ "id": 33463,
+ "name": "FunctionCall",
+ "src": "19961:116:95"
+ }
+ ],
+ "id": 33464,
+ "name": "ExpressionStatement",
+ "src": "19961:116:95"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 33466
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "sentIndex",
+ "scope": 33601,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 33465,
+ "name": "ElementaryTypeName",
+ "src": "20084:7:95"
+ }
+ ],
+ "id": 33466,
+ "name": "VariableDeclaration",
+ "src": "20084:17:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sub",
+ "referencedDeclaration": 219,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "push",
+ "referencedDeclaration": null,
+ "type": "function (address) returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32721,
+ "type": "mapping(address => address[] storage ref)",
+ "value": "sentPaymentIds"
+ },
+ "id": 33467,
+ "name": "Identifier",
+ "src": "20104:14:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 33468,
+ "name": "Identifier",
+ "src": "20119:3:95"
+ }
+ ],
+ "id": 33469,
+ "name": "MemberAccess",
+ "src": "20119:10:95"
+ }
+ ],
+ "id": 33470,
+ "name": "IndexAccess",
+ "src": "20104:26:95"
+ }
+ ],
+ "id": 33471,
+ "name": "MemberAccess",
+ "src": "20104:31:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33389,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 33472,
+ "name": "Identifier",
+ "src": "20136:9:95"
+ }
+ ],
+ "id": 33473,
+ "name": "FunctionCall",
+ "src": "20104:42:95"
+ }
+ ],
+ "id": 33474,
+ "name": "MemberAccess",
+ "src": "20104:46:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 33475,
+ "name": "Literal",
+ "src": "20151:1:95"
+ }
+ ],
+ "id": 33476,
+ "name": "FunctionCall",
+ "src": "20104:49:95"
+ }
+ ],
+ "id": 33477,
+ "name": "VariableDeclarationStatement",
+ "src": "20084:69:95"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 33479
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "receivedIndex",
+ "scope": 33601,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 33478,
+ "name": "ElementaryTypeName",
+ "src": "20159:7:95"
+ }
+ ],
+ "id": 33479,
+ "name": "VariableDeclaration",
+ "src": "20159:21:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sub",
+ "referencedDeclaration": 219,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "push",
+ "referencedDeclaration": null,
+ "type": "function (address) returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32716,
+ "type": "mapping(bytes32 => address[] storage ref)",
+ "value": "receivedPaymentIds"
+ },
+ "id": 33480,
+ "name": "Identifier",
+ "src": "20183:18:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33381,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 33481,
+ "name": "Identifier",
+ "src": "20202:10:95"
+ }
+ ],
+ "id": 33482,
+ "name": "IndexAccess",
+ "src": "20183:30:95"
+ }
+ ],
+ "id": 33483,
+ "name": "MemberAccess",
+ "src": "20183:35:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33389,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 33484,
+ "name": "Identifier",
+ "src": "20219:9:95"
+ }
+ ],
+ "id": 33485,
+ "name": "FunctionCall",
+ "src": "20183:46:95"
+ }
+ ],
+ "id": 33486,
+ "name": "MemberAccess",
+ "src": "20183:50:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 33487,
+ "name": "Literal",
+ "src": "20234:1:95"
+ }
+ ],
+ "id": 33488,
+ "name": "FunctionCall",
+ "src": "20183:53:95"
+ }
+ ],
+ "id": 33489,
+ "name": "VariableDeclarationStatement",
+ "src": "20159:77:95"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 33491
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "newPayment",
+ "scope": 33601,
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "type": "struct Escrow.EscrowedPayment",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "EscrowedPayment",
+ "referencedDeclaration": 32707,
+ "type": "struct Escrow.EscrowedPayment"
+ },
+ "id": 33490,
+ "name": "UserDefinedTypeName",
+ "src": "20243:15:95"
+ }
+ ],
+ "id": 33491,
+ "name": "VariableDeclaration",
+ "src": "20243:34:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "struct Escrow.EscrowedPayment storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32711,
+ "type": "mapping(address => struct Escrow.EscrowedPayment storage ref)",
+ "value": "escrowedPayments"
+ },
+ "id": 33492,
+ "name": "Identifier",
+ "src": "20280:16:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33389,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 33493,
+ "name": "Identifier",
+ "src": "20297:9:95"
+ }
+ ],
+ "id": 33494,
+ "name": "IndexAccess",
+ "src": "20280:27:95"
+ }
+ ],
+ "id": 33495,
+ "name": "VariableDeclarationStatement",
+ "src": "20243:64:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_1d10c10fff9c8431e2b33a8887376fcdc3728d68275e31a50c4acace0fdfe7b9",
+ "typeString": "literal_string \"paymentId already used\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 33496,
+ "name": "Identifier",
+ "src": "20313:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "==",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "timestamp",
+ "referencedDeclaration": 32702,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33491,
+ "type": "struct Escrow.EscrowedPayment storage pointer",
+ "value": "newPayment"
+ },
+ "id": 33497,
+ "name": "Identifier",
+ "src": "20321:10:95"
+ }
+ ],
+ "id": 33498,
+ "name": "MemberAccess",
+ "src": "20321:20:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 33499,
+ "name": "Literal",
+ "src": "20345:1:95"
+ }
+ ],
+ "id": 33500,
+ "name": "BinaryOperation",
+ "src": "20321:25:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "7061796d656e74496420616c72656164792075736564",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"paymentId already used\"",
+ "value": "paymentId already used"
+ },
+ "id": 33501,
+ "name": "Literal",
+ "src": "20348:24:95"
+ }
+ ],
+ "id": 33502,
+ "name": "FunctionCall",
+ "src": "20313:60:95"
+ }
+ ],
+ "id": 33503,
+ "name": "ExpressionStatement",
+ "src": "20313:60:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "bytes32"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "member_name": "recipientIdentifier",
+ "referencedDeclaration": 32690,
+ "type": "bytes32"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33491,
+ "type": "struct Escrow.EscrowedPayment storage pointer",
+ "value": "newPayment"
+ },
+ "id": 33504,
+ "name": "Identifier",
+ "src": "20379:10:95"
+ }
+ ],
+ "id": 33506,
+ "name": "MemberAccess",
+ "src": "20379:30:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33381,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 33507,
+ "name": "Identifier",
+ "src": "20412:10:95"
+ }
+ ],
+ "id": 33508,
+ "name": "Assignment",
+ "src": "20379:43:95"
+ }
+ ],
+ "id": 33509,
+ "name": "ExpressionStatement",
+ "src": "20379:43:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "member_name": "sender",
+ "referencedDeclaration": 32692,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33491,
+ "type": "struct Escrow.EscrowedPayment storage pointer",
+ "value": "newPayment"
+ },
+ "id": 33510,
+ "name": "Identifier",
+ "src": "20428:10:95"
+ }
+ ],
+ "id": 33512,
+ "name": "MemberAccess",
+ "src": "20428:17:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 33513,
+ "name": "Identifier",
+ "src": "20448:3:95"
+ }
+ ],
+ "id": 33514,
+ "name": "MemberAccess",
+ "src": "20448:10:95"
+ }
+ ],
+ "id": 33515,
+ "name": "Assignment",
+ "src": "20428:30:95"
+ }
+ ],
+ "id": 33516,
+ "name": "ExpressionStatement",
+ "src": "20428:30:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "member_name": "token",
+ "referencedDeclaration": 32694,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33491,
+ "type": "struct Escrow.EscrowedPayment storage pointer",
+ "value": "newPayment"
+ },
+ "id": 33517,
+ "name": "Identifier",
+ "src": "20464:10:95"
+ }
+ ],
+ "id": 33519,
+ "name": "MemberAccess",
+ "src": "20464:16:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33383,
+ "type": "address",
+ "value": "token"
+ },
+ "id": 33520,
+ "name": "Identifier",
+ "src": "20483:5:95"
+ }
+ ],
+ "id": 33521,
+ "name": "Assignment",
+ "src": "20464:24:95"
+ }
+ ],
+ "id": 33522,
+ "name": "ExpressionStatement",
+ "src": "20464:24:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "member_name": "value",
+ "referencedDeclaration": 32696,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33491,
+ "type": "struct Escrow.EscrowedPayment storage pointer",
+ "value": "newPayment"
+ },
+ "id": 33523,
+ "name": "Identifier",
+ "src": "20494:10:95"
+ }
+ ],
+ "id": 33525,
+ "name": "MemberAccess",
+ "src": "20494:16:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33385,
+ "type": "uint256",
+ "value": "value"
+ },
+ "id": 33526,
+ "name": "Identifier",
+ "src": "20513:5:95"
+ }
+ ],
+ "id": 33527,
+ "name": "Assignment",
+ "src": "20494:24:95"
+ }
+ ],
+ "id": 33528,
+ "name": "ExpressionStatement",
+ "src": "20494:24:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "member_name": "sentIndex",
+ "referencedDeclaration": 32698,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33491,
+ "type": "struct Escrow.EscrowedPayment storage pointer",
+ "value": "newPayment"
+ },
+ "id": 33529,
+ "name": "Identifier",
+ "src": "20524:10:95"
+ }
+ ],
+ "id": 33531,
+ "name": "MemberAccess",
+ "src": "20524:20:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33466,
+ "type": "uint256",
+ "value": "sentIndex"
+ },
+ "id": 33532,
+ "name": "Identifier",
+ "src": "20547:9:95"
+ }
+ ],
+ "id": 33533,
+ "name": "Assignment",
+ "src": "20524:32:95"
+ }
+ ],
+ "id": 33534,
+ "name": "ExpressionStatement",
+ "src": "20524:32:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "member_name": "receivedIndex",
+ "referencedDeclaration": 32700,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33491,
+ "type": "struct Escrow.EscrowedPayment storage pointer",
+ "value": "newPayment"
+ },
+ "id": 33535,
+ "name": "Identifier",
+ "src": "20562:10:95"
+ }
+ ],
+ "id": 33537,
+ "name": "MemberAccess",
+ "src": "20562:24:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33479,
+ "type": "uint256",
+ "value": "receivedIndex"
+ },
+ "id": 33538,
+ "name": "Identifier",
+ "src": "20589:13:95"
+ }
+ ],
+ "id": 33539,
+ "name": "Assignment",
+ "src": "20562:40:95"
+ }
+ ],
+ "id": 33540,
+ "name": "ExpressionStatement",
+ "src": "20562:40:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "member_name": "timestamp",
+ "referencedDeclaration": 32702,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33491,
+ "type": "struct Escrow.EscrowedPayment storage pointer",
+ "value": "newPayment"
+ },
+ "id": 33541,
+ "name": "Identifier",
+ "src": "20608:10:95"
+ }
+ ],
+ "id": 33543,
+ "name": "MemberAccess",
+ "src": "20608:20:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "timestamp",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42896,
+ "type": "block",
+ "value": "block"
+ },
+ "id": 33544,
+ "name": "Identifier",
+ "src": "20631:5:95"
+ }
+ ],
+ "id": 33545,
+ "name": "MemberAccess",
+ "src": "20631:15:95"
+ }
+ ],
+ "id": 33546,
+ "name": "Assignment",
+ "src": "20608:38:95"
+ }
+ ],
+ "id": 33547,
+ "name": "ExpressionStatement",
+ "src": "20608:38:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "member_name": "expirySeconds",
+ "referencedDeclaration": 32704,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33491,
+ "type": "struct Escrow.EscrowedPayment storage pointer",
+ "value": "newPayment"
+ },
+ "id": 33548,
+ "name": "Identifier",
+ "src": "20652:10:95"
+ }
+ ],
+ "id": 33550,
+ "name": "MemberAccess",
+ "src": "20652:24:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33387,
+ "type": "uint256",
+ "value": "expirySeconds"
+ },
+ "id": 33551,
+ "name": "Identifier",
+ "src": "20679:13:95"
+ }
+ ],
+ "id": 33552,
+ "name": "Assignment",
+ "src": "20652:40:95"
+ }
+ ],
+ "id": 33553,
+ "name": "ExpressionStatement",
+ "src": "20652:40:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "member_name": "minAttestations",
+ "referencedDeclaration": 32706,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33491,
+ "type": "struct Escrow.EscrowedPayment storage pointer",
+ "value": "newPayment"
+ },
+ "id": 33554,
+ "name": "Identifier",
+ "src": "20698:10:95"
+ }
+ ],
+ "id": 33556,
+ "name": "MemberAccess",
+ "src": "20698:26:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33391,
+ "type": "uint256",
+ "value": "minAttestations"
+ },
+ "id": 33557,
+ "name": "Identifier",
+ "src": "20727:15:95"
+ }
+ ],
+ "id": 33558,
+ "name": "Assignment",
+ "src": "20698:44:95"
+ }
+ ],
+ "id": 33559,
+ "name": "ExpressionStatement",
+ "src": "20698:44:95"
+ },
+ {
+ "attributes": {
+ "falseBody": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": ">",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33394,
+ "type": "address[] memory",
+ "value": "trustedIssuers"
+ },
+ "id": 33560,
+ "name": "Identifier",
+ "src": "20792:14:95"
+ }
+ ],
+ "id": 33561,
+ "name": "MemberAccess",
+ "src": "20792:21:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 33562,
+ "name": "Literal",
+ "src": "20816:1:95"
+ }
+ ],
+ "id": 33563,
+ "name": "BinaryOperation",
+ "src": "20792:25:95"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "address[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "type": "address[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32726,
+ "type": "mapping(address => address[] storage ref)",
+ "value": "trustedIssuersPerPayment"
+ },
+ "id": 33564,
+ "name": "Identifier",
+ "src": "20827:24:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33389,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 33565,
+ "name": "Identifier",
+ "src": "20852:9:95"
+ }
+ ],
+ "id": 33566,
+ "name": "IndexAccess",
+ "src": "20827:35:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33394,
+ "type": "address[] memory",
+ "value": "trustedIssuers"
+ },
+ "id": 33567,
+ "name": "Identifier",
+ "src": "20865:14:95"
+ }
+ ],
+ "id": 33568,
+ "name": "Assignment",
+ "src": "20827:52:95"
+ }
+ ],
+ "id": 33569,
+ "name": "ExpressionStatement",
+ "src": "20827:52:95"
+ }
+ ],
+ "id": 33570,
+ "name": "Block",
+ "src": "20819:67:95"
+ }
+ ],
+ "id": 33571,
+ "name": "IfStatement",
+ "src": "20788:98:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "safeTransferFrom",
+ "referencedDeclaration": 1013,
+ "type": "function (contract IERC20,address,address,uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "contract ERC20",
+ "type_conversion": true
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 886,
+ "type": "type(contract ERC20)",
+ "value": "ERC20"
+ },
+ "id": 33572,
+ "name": "Identifier",
+ "src": "20892:5:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33383,
+ "type": "address",
+ "value": "token"
+ },
+ "id": 33573,
+ "name": "Identifier",
+ "src": "20898:5:95"
+ }
+ ],
+ "id": 33574,
+ "name": "FunctionCall",
+ "src": "20892:12:95"
+ }
+ ],
+ "id": 33575,
+ "name": "MemberAccess",
+ "src": "20892:29:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 33576,
+ "name": "Identifier",
+ "src": "20922:3:95"
+ }
+ ],
+ "id": 33577,
+ "name": "MemberAccess",
+ "src": "20922:10:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "address",
+ "type_conversion": true
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_contract$_Escrow_$33717",
+ "typeString": "contract Escrow"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "type": "type(address)",
+ "value": "address"
+ },
+ "id": 33578,
+ "name": "ElementaryTypeNameExpression",
+ "src": "20934:7:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 43126,
+ "type": "contract Escrow",
+ "value": "this"
+ },
+ "id": 33579,
+ "name": "Identifier",
+ "src": "20942:4:95"
+ }
+ ],
+ "id": 33580,
+ "name": "FunctionCall",
+ "src": "20934:13:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33385,
+ "type": "uint256",
+ "value": "value"
+ },
+ "id": 33581,
+ "name": "Identifier",
+ "src": "20949:5:95"
+ }
+ ],
+ "id": 33582,
+ "name": "FunctionCall",
+ "src": "20892:63:95"
+ }
+ ],
+ "id": 33583,
+ "name": "ExpressionStatement",
+ "src": "20892:63:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32653,
+ "type": "function (address,bytes32,address,uint256,address,uint256)",
+ "value": "Transfer"
+ },
+ "id": 33584,
+ "name": "Identifier",
+ "src": "20966:8:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 33585,
+ "name": "Identifier",
+ "src": "20975:3:95"
+ }
+ ],
+ "id": 33586,
+ "name": "MemberAccess",
+ "src": "20975:10:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33381,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 33587,
+ "name": "Identifier",
+ "src": "20987:10:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33383,
+ "type": "address",
+ "value": "token"
+ },
+ "id": 33588,
+ "name": "Identifier",
+ "src": "20999:5:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33385,
+ "type": "uint256",
+ "value": "value"
+ },
+ "id": 33589,
+ "name": "Identifier",
+ "src": "21006:5:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33389,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 33590,
+ "name": "Identifier",
+ "src": "21013:9:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33391,
+ "type": "uint256",
+ "value": "minAttestations"
+ },
+ "id": 33591,
+ "name": "Identifier",
+ "src": "21024:15:95"
+ }
+ ],
+ "id": 33592,
+ "name": "FunctionCall",
+ "src": "20966:74:95"
+ }
+ ],
+ "id": 33593,
+ "name": "EmitStatement",
+ "src": "20961:79:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32660,
+ "type": "function (address,address[] memory)",
+ "value": "TrustedIssuersSet"
+ },
+ "id": 33594,
+ "name": "Identifier",
+ "src": "21116:17:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33389,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 33595,
+ "name": "Identifier",
+ "src": "21134:9:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33394,
+ "type": "address[] memory",
+ "value": "trustedIssuers"
+ },
+ "id": 33596,
+ "name": "Identifier",
+ "src": "21145:14:95"
+ }
+ ],
+ "id": 33597,
+ "name": "FunctionCall",
+ "src": "21116:44:95"
+ }
+ ],
+ "id": 33598,
+ "name": "EmitStatement",
+ "src": "21111:49:95"
+ },
+ {
+ "attributes": {
+ "functionReturnParameters": 33398
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "74727565",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "bool",
+ "type": "bool",
+ "value": "true"
+ },
+ "id": 33599,
+ "name": "Literal",
+ "src": "21173:4:95"
+ }
+ ],
+ "id": 33600,
+ "name": "Return",
+ "src": "21166:11:95"
+ }
+ ],
+ "id": 33601,
+ "name": "Block",
+ "src": "19010:2172:95"
+ }
+ ],
+ "id": 33602,
+ "name": "FunctionDefinition",
+ "src": "18786:2396:95"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Deletes the payment from its receiver's and sender's lists of payments,\nand zeroes out all the data in the struct.\n@param paymentId The ID of the payment to be deleted.",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "deletePayment",
+ "scope": 33717,
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "private"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "paymentId",
+ "scope": 33716,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33603,
+ "name": "ElementaryTypeName",
+ "src": "21409:7:95"
+ }
+ ],
+ "id": 33604,
+ "name": "VariableDeclaration",
+ "src": "21409:17:95"
+ }
+ ],
+ "id": 33605,
+ "name": "ParameterList",
+ "src": "21408:19:95"
+ },
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 33606,
+ "name": "ParameterList",
+ "src": "21436:0:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 33608
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "payment",
+ "scope": 33715,
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "type": "struct Escrow.EscrowedPayment",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "EscrowedPayment",
+ "referencedDeclaration": 32707,
+ "type": "struct Escrow.EscrowedPayment"
+ },
+ "id": 33607,
+ "name": "UserDefinedTypeName",
+ "src": "21442:15:95"
+ }
+ ],
+ "id": 33608,
+ "name": "VariableDeclaration",
+ "src": "21442:31:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "struct Escrow.EscrowedPayment storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32711,
+ "type": "mapping(address => struct Escrow.EscrowedPayment storage ref)",
+ "value": "escrowedPayments"
+ },
+ "id": 33609,
+ "name": "Identifier",
+ "src": "21476:16:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33604,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 33610,
+ "name": "Identifier",
+ "src": "21493:9:95"
+ }
+ ],
+ "id": 33611,
+ "name": "IndexAccess",
+ "src": "21476:27:95"
+ }
+ ],
+ "id": 33612,
+ "name": "VariableDeclarationStatement",
+ "src": "21442:61:95"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 33616
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "received",
+ "scope": 33715,
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "type": "address"
+ },
+ "id": 33614,
+ "name": "ElementaryTypeName",
+ "src": "21509:7:95"
+ }
+ ],
+ "id": 33615,
+ "name": "ArrayTypeName",
+ "src": "21509:9:95"
+ }
+ ],
+ "id": 33616,
+ "name": "VariableDeclaration",
+ "src": "21509:26:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32716,
+ "type": "mapping(bytes32 => address[] storage ref)",
+ "value": "receivedPaymentIds"
+ },
+ "id": 33617,
+ "name": "Identifier",
+ "src": "21538:18:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "recipientIdentifier",
+ "referencedDeclaration": 32690,
+ "type": "bytes32"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33608,
+ "type": "struct Escrow.EscrowedPayment storage pointer",
+ "value": "payment"
+ },
+ "id": 33618,
+ "name": "Identifier",
+ "src": "21557:7:95"
+ }
+ ],
+ "id": 33619,
+ "name": "MemberAccess",
+ "src": "21557:27:95"
+ }
+ ],
+ "id": 33620,
+ "name": "IndexAccess",
+ "src": "21538:47:95"
+ }
+ ],
+ "id": 33621,
+ "name": "VariableDeclarationStatement",
+ "src": "21509:76:95"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 33625
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "sent",
+ "scope": 33715,
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "type": "address"
+ },
+ "id": 33623,
+ "name": "ElementaryTypeName",
+ "src": "21591:7:95"
+ }
+ ],
+ "id": 33624,
+ "name": "ArrayTypeName",
+ "src": "21591:9:95"
+ }
+ ],
+ "id": 33625,
+ "name": "VariableDeclaration",
+ "src": "21591:22:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32721,
+ "type": "mapping(address => address[] storage ref)",
+ "value": "sentPaymentIds"
+ },
+ "id": 33626,
+ "name": "Identifier",
+ "src": "21616:14:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": 32692,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33608,
+ "type": "struct Escrow.EscrowedPayment storage pointer",
+ "value": "payment"
+ },
+ "id": 33627,
+ "name": "Identifier",
+ "src": "21631:7:95"
+ }
+ ],
+ "id": 33628,
+ "name": "MemberAccess",
+ "src": "21631:14:95"
+ }
+ ],
+ "id": 33629,
+ "name": "IndexAccess",
+ "src": "21616:30:95"
+ }
+ ],
+ "id": 33630,
+ "name": "VariableDeclarationStatement",
+ "src": "21591:55:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "member_name": "receivedIndex",
+ "referencedDeclaration": 32700,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "struct Escrow.EscrowedPayment storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32711,
+ "type": "mapping(address => struct Escrow.EscrowedPayment storage ref)",
+ "value": "escrowedPayments"
+ },
+ "id": 33631,
+ "name": "Identifier",
+ "src": "21653:16:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33616,
+ "type": "address[] storage pointer",
+ "value": "received"
+ },
+ "id": 33632,
+ "name": "Identifier",
+ "src": "21670:8:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "-",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33616,
+ "type": "address[] storage pointer",
+ "value": "received"
+ },
+ "id": 33633,
+ "name": "Identifier",
+ "src": "21679:8:95"
+ }
+ ],
+ "id": 33634,
+ "name": "MemberAccess",
+ "src": "21679:15:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 33635,
+ "name": "Literal",
+ "src": "21697:1:95"
+ }
+ ],
+ "id": 33636,
+ "name": "BinaryOperation",
+ "src": "21679:19:95"
+ }
+ ],
+ "id": 33637,
+ "name": "IndexAccess",
+ "src": "21670:29:95"
+ }
+ ],
+ "id": 33638,
+ "name": "IndexAccess",
+ "src": "21653:47:95"
+ }
+ ],
+ "id": 33639,
+ "name": "MemberAccess",
+ "src": "21653:61:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "receivedIndex",
+ "referencedDeclaration": 32700,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33608,
+ "type": "struct Escrow.EscrowedPayment storage pointer",
+ "value": "payment"
+ },
+ "id": 33640,
+ "name": "Identifier",
+ "src": "21717:7:95"
+ }
+ ],
+ "id": 33641,
+ "name": "MemberAccess",
+ "src": "21717:21:95"
+ }
+ ],
+ "id": 33642,
+ "name": "Assignment",
+ "src": "21653:85:95"
+ }
+ ],
+ "id": 33643,
+ "name": "ExpressionStatement",
+ "src": "21653:85:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33616,
+ "type": "address[] storage pointer",
+ "value": "received"
+ },
+ "id": 33644,
+ "name": "Identifier",
+ "src": "21744:8:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "receivedIndex",
+ "referencedDeclaration": 32700,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33608,
+ "type": "struct Escrow.EscrowedPayment storage pointer",
+ "value": "payment"
+ },
+ "id": 33645,
+ "name": "Identifier",
+ "src": "21753:7:95"
+ }
+ ],
+ "id": 33646,
+ "name": "MemberAccess",
+ "src": "21753:21:95"
+ }
+ ],
+ "id": 33647,
+ "name": "IndexAccess",
+ "src": "21744:31:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33616,
+ "type": "address[] storage pointer",
+ "value": "received"
+ },
+ "id": 33648,
+ "name": "Identifier",
+ "src": "21778:8:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "-",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33616,
+ "type": "address[] storage pointer",
+ "value": "received"
+ },
+ "id": 33649,
+ "name": "Identifier",
+ "src": "21787:8:95"
+ }
+ ],
+ "id": 33650,
+ "name": "MemberAccess",
+ "src": "21787:15:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 33651,
+ "name": "Literal",
+ "src": "21805:1:95"
+ }
+ ],
+ "id": 33652,
+ "name": "BinaryOperation",
+ "src": "21787:19:95"
+ }
+ ],
+ "id": 33653,
+ "name": "IndexAccess",
+ "src": "21778:29:95"
+ }
+ ],
+ "id": 33654,
+ "name": "Assignment",
+ "src": "21744:63:95"
+ }
+ ],
+ "id": 33655,
+ "name": "ExpressionStatement",
+ "src": "21744:63:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33616,
+ "type": "address[] storage pointer",
+ "value": "received"
+ },
+ "id": 33656,
+ "name": "Identifier",
+ "src": "21813:8:95"
+ }
+ ],
+ "id": 33658,
+ "name": "MemberAccess",
+ "src": "21813:15:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sub",
+ "referencedDeclaration": 219,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33616,
+ "type": "address[] storage pointer",
+ "value": "received"
+ },
+ "id": 33659,
+ "name": "Identifier",
+ "src": "21831:8:95"
+ }
+ ],
+ "id": 33660,
+ "name": "MemberAccess",
+ "src": "21831:15:95"
+ }
+ ],
+ "id": 33661,
+ "name": "MemberAccess",
+ "src": "21831:19:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 33662,
+ "name": "Literal",
+ "src": "21851:1:95"
+ }
+ ],
+ "id": 33663,
+ "name": "FunctionCall",
+ "src": "21831:22:95"
+ }
+ ],
+ "id": 33664,
+ "name": "Assignment",
+ "src": "21813:40:95"
+ }
+ ],
+ "id": 33665,
+ "name": "ExpressionStatement",
+ "src": "21813:40:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "member_name": "sentIndex",
+ "referencedDeclaration": 32698,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "struct Escrow.EscrowedPayment storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32711,
+ "type": "mapping(address => struct Escrow.EscrowedPayment storage ref)",
+ "value": "escrowedPayments"
+ },
+ "id": 33666,
+ "name": "Identifier",
+ "src": "21860:16:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33625,
+ "type": "address[] storage pointer",
+ "value": "sent"
+ },
+ "id": 33667,
+ "name": "Identifier",
+ "src": "21877:4:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "-",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33625,
+ "type": "address[] storage pointer",
+ "value": "sent"
+ },
+ "id": 33668,
+ "name": "Identifier",
+ "src": "21882:4:95"
+ }
+ ],
+ "id": 33669,
+ "name": "MemberAccess",
+ "src": "21882:11:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 33670,
+ "name": "Literal",
+ "src": "21896:1:95"
+ }
+ ],
+ "id": 33671,
+ "name": "BinaryOperation",
+ "src": "21882:15:95"
+ }
+ ],
+ "id": 33672,
+ "name": "IndexAccess",
+ "src": "21877:21:95"
+ }
+ ],
+ "id": 33673,
+ "name": "IndexAccess",
+ "src": "21860:39:95"
+ }
+ ],
+ "id": 33674,
+ "name": "MemberAccess",
+ "src": "21860:49:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sentIndex",
+ "referencedDeclaration": 32698,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33608,
+ "type": "struct Escrow.EscrowedPayment storage pointer",
+ "value": "payment"
+ },
+ "id": 33675,
+ "name": "Identifier",
+ "src": "21912:7:95"
+ }
+ ],
+ "id": 33676,
+ "name": "MemberAccess",
+ "src": "21912:17:95"
+ }
+ ],
+ "id": 33677,
+ "name": "Assignment",
+ "src": "21860:69:95"
+ }
+ ],
+ "id": 33678,
+ "name": "ExpressionStatement",
+ "src": "21860:69:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33625,
+ "type": "address[] storage pointer",
+ "value": "sent"
+ },
+ "id": 33679,
+ "name": "Identifier",
+ "src": "21935:4:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sentIndex",
+ "referencedDeclaration": 32698,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33608,
+ "type": "struct Escrow.EscrowedPayment storage pointer",
+ "value": "payment"
+ },
+ "id": 33680,
+ "name": "Identifier",
+ "src": "21940:7:95"
+ }
+ ],
+ "id": 33681,
+ "name": "MemberAccess",
+ "src": "21940:17:95"
+ }
+ ],
+ "id": 33682,
+ "name": "IndexAccess",
+ "src": "21935:23:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33625,
+ "type": "address[] storage pointer",
+ "value": "sent"
+ },
+ "id": 33683,
+ "name": "Identifier",
+ "src": "21961:4:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "-",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33625,
+ "type": "address[] storage pointer",
+ "value": "sent"
+ },
+ "id": 33684,
+ "name": "Identifier",
+ "src": "21966:4:95"
+ }
+ ],
+ "id": 33685,
+ "name": "MemberAccess",
+ "src": "21966:11:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 33686,
+ "name": "Literal",
+ "src": "21980:1:95"
+ }
+ ],
+ "id": 33687,
+ "name": "BinaryOperation",
+ "src": "21966:15:95"
+ }
+ ],
+ "id": 33688,
+ "name": "IndexAccess",
+ "src": "21961:21:95"
+ }
+ ],
+ "id": 33689,
+ "name": "Assignment",
+ "src": "21935:47:95"
+ }
+ ],
+ "id": 33690,
+ "name": "ExpressionStatement",
+ "src": "21935:47:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33625,
+ "type": "address[] storage pointer",
+ "value": "sent"
+ },
+ "id": 33691,
+ "name": "Identifier",
+ "src": "21988:4:95"
+ }
+ ],
+ "id": 33693,
+ "name": "MemberAccess",
+ "src": "21988:11:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sub",
+ "referencedDeclaration": 219,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33625,
+ "type": "address[] storage pointer",
+ "value": "sent"
+ },
+ "id": 33694,
+ "name": "Identifier",
+ "src": "22002:4:95"
+ }
+ ],
+ "id": 33695,
+ "name": "MemberAccess",
+ "src": "22002:11:95"
+ }
+ ],
+ "id": 33696,
+ "name": "MemberAccess",
+ "src": "22002:15:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 33697,
+ "name": "Literal",
+ "src": "22018:1:95"
+ }
+ ],
+ "id": 33698,
+ "name": "FunctionCall",
+ "src": "22002:18:95"
+ }
+ ],
+ "id": 33699,
+ "name": "Assignment",
+ "src": "21988:32:95"
+ }
+ ],
+ "id": 33700,
+ "name": "ExpressionStatement",
+ "src": "21988:32:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "delete",
+ "prefix": true,
+ "type": "tuple()"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "type": "struct Escrow.EscrowedPayment storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32711,
+ "type": "mapping(address => struct Escrow.EscrowedPayment storage ref)",
+ "value": "escrowedPayments"
+ },
+ "id": 33701,
+ "name": "Identifier",
+ "src": "22034:16:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33604,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 33702,
+ "name": "Identifier",
+ "src": "22051:9:95"
+ }
+ ],
+ "id": 33703,
+ "name": "IndexAccess",
+ "src": "22034:27:95"
+ }
+ ],
+ "id": 33704,
+ "name": "UnaryOperation",
+ "src": "22027:34:95"
+ }
+ ],
+ "id": 33705,
+ "name": "ExpressionStatement",
+ "src": "22027:34:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "delete",
+ "prefix": true,
+ "type": "tuple()"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "type": "address[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32726,
+ "type": "mapping(address => address[] storage ref)",
+ "value": "trustedIssuersPerPayment"
+ },
+ "id": 33706,
+ "name": "Identifier",
+ "src": "22074:24:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33604,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 33707,
+ "name": "Identifier",
+ "src": "22099:9:95"
+ }
+ ],
+ "id": 33708,
+ "name": "IndexAccess",
+ "src": "22074:35:95"
+ }
+ ],
+ "id": 33709,
+ "name": "UnaryOperation",
+ "src": "22067:42:95"
+ }
+ ],
+ "id": 33710,
+ "name": "ExpressionStatement",
+ "src": "22067:42:95"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 32664,
+ "type": "function (address)",
+ "value": "TrustedIssuersUnset"
+ },
+ "id": 33711,
+ "name": "Identifier",
+ "src": "22120:19:95"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33604,
+ "type": "address",
+ "value": "paymentId"
+ },
+ "id": 33712,
+ "name": "Identifier",
+ "src": "22140:9:95"
+ }
+ ],
+ "id": 33713,
+ "name": "FunctionCall",
+ "src": "22120:30:95"
+ }
+ ],
+ "id": 33714,
+ "name": "EmitStatement",
+ "src": "22115:35:95"
+ }
+ ],
+ "id": 33715,
+ "name": "Block",
+ "src": "21436:719:95"
+ }
+ ],
+ "id": 33716,
+ "name": "FunctionDefinition",
+ "src": "21386:769:95"
+ }
+ ],
+ "id": 33717,
+ "name": "ContractDefinition",
+ "src": "650:21507:95"
+ }
+ ],
+ "id": 33718,
+ "name": "SourceUnit",
+ "src": "0:22158:95"
+ },
+ "compiler": {
+ "name": "solc",
+ "version": "0.5.13+commit.5b0b510c.Emscripten.clang"
+ },
+ "networks": {},
+ "schemaVersion": "3.4.7",
+ "updatedAt": "2022-09-23T16:17:10.926Z",
+ "devdoc": {
+ "methods": {
+ "addDefaultTrustedIssuer(address)": {
+ "details": "Throws if trustedIssuer is null or already in defaultTrustedIssuers.Throws if defaultTrustedIssuers is already at max allowed length.",
+ "params": {
+ "trustedIssuer": "Address of the trustedIssuer to add."
+ }
+ },
+ "constructor": {
+ "params": {
+ "test": "Set to true to skip implementation initialization"
+ }
+ },
+ "getDefaultTrustedIssuers()": {
+ "return": "An array of addresses of trusted issuers."
+ },
+ "getReceivedPaymentIds(bytes32)": {
+ "params": {
+ "identifier": "The hash of an identifier of the receiver of the escrowed payment."
+ },
+ "return": "An array containing all the IDs of the Escrowed Payments that were received by the specified receiver."
+ },
+ "getSentPaymentIds(address)": {
+ "params": {
+ "sender": "The address of the sender of the escrowed payments."
+ },
+ "return": "An array containing all the IDs of the Escrowed Payments that were sent by the specified sender."
+ },
+ "getTrustedIssuersPerPayment(address)": {
+ "params": {
+ "paymentId": "The ID of the payment to get."
+ },
+ "return": "An array of addresses of trusted issuers set for an escrowed payment."
+ },
+ "getVersionNumber()": {
+ "return": "The storage, major, minor, and patch version of the contract."
+ },
+ "isOwner()": {
+ "details": "Returns true if the caller is the current owner."
+ },
+ "owner()": {
+ "details": "Returns the address of the current owner."
+ },
+ "removeDefaultTrustedIssuer(address,uint256)": {
+ "details": "Throws if trustedIssuer is not in defaultTrustedIssuers at index.",
+ "params": {
+ "index": "Index of trustedIssuer in defaultTrustedIssuers.",
+ "trustedIssuer": "Address of the trustedIssuer to remove."
+ }
+ },
+ "renounceOwnership()": {
+ "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
+ },
+ "revoke(address)": {
+ "details": "Throws if 'token' or 'value' is 0.Throws if msg.sender is not the sender of payment.Throws if redeem time hasn't been reached yet.",
+ "params": {
+ "paymentId": "The ID for the EscrowedPayment struct that contains all relevant information."
+ }
+ },
+ "transfer(bytes32,address,uint256,uint256,address,uint256)": {
+ "details": "Throws if 'token' or 'value' is 0.Throws if identifier is null and minAttestations > 0.If minAttestations is 0, trustedIssuers will be set to empty list.msg.sender needs to have already approved this contract to transfer",
+ "params": {
+ "expirySeconds": "The number of seconds before the sender can revoke the payment.",
+ "identifier": "The hashed identifier of a user to transfer to.",
+ "minAttestations": "The min number of attestations required to withdraw the payment.",
+ "paymentId": "The address of the temporary wallet associated with this payment. Users must prove ownership of the corresponding private key to withdraw from escrow.",
+ "token": "The token to be transferred.",
+ "value": "The amount to be transferred."
+ },
+ "return": "True if transfer succeeded."
+ },
+ "transferOwnership(address)": {
+ "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
+ },
+ "transferWithTrustedIssuers(bytes32,address,uint256,uint256,address,uint256,address[])": {
+ "details": "Throws if 'token' or 'value' is 0.Throws if identifier is null and minAttestations > 0.Throws if minAttestations == 0 but trustedIssuers are provided.msg.sender needs to have already approved this contract to transfer.",
+ "params": {
+ "expirySeconds": "The number of seconds before the sender can revoke the payment.",
+ "identifier": "The hashed identifier of a user to transfer to.",
+ "minAttestations": "The min number of attestations required to withdraw the payment.",
+ "paymentId": "The address of the temporary wallet associated with this payment. Users must prove ownership of the corresponding private key to withdraw from escrow.",
+ "token": "The token to be transferred.",
+ "trustedIssuers": "Array of issuers whose attestations in FederatedAttestations.sol will be accepted to prove ownership over an identifier.",
+ "value": "The amount to be transferred."
+ },
+ "return": "True if transfer succeeded."
+ },
+ "withdraw(address,uint8,bytes32,bytes32)": {
+ "details": "Throws if 'token' or 'value' is 0.Throws if msg.sender does not prove ownership of the withdraw key.",
+ "params": {
+ "paymentId": "The ID for the EscrowedPayment struct that contains all relevant information.",
+ "r": "Output value r of the ECDSA signature.",
+ "s": "Output value s of the ECDSA signature.",
+ "v": "The recovery id of the incoming ECDSA signature."
+ },
+ "return": "True if withdraw succeeded."
+ }
+ }
+ },
+ "userdoc": {
+ "methods": {
+ "addDefaultTrustedIssuer(address)": {
+ "notice": "Add an address to the defaultTrustedIssuers list."
+ },
+ "constructor": "Sets initialized == true on implementation contracts",
+ "getDefaultTrustedIssuers()": {
+ "notice": "Gets trusted issuers set as default for payments by `transfer` function."
+ },
+ "getReceivedPaymentIds(bytes32)": {
+ "notice": "Gets array of all Escrowed Payments received by identifier."
+ },
+ "getSentPaymentIds(address)": {
+ "notice": "Gets array of all Escrowed Payment IDs sent by sender."
+ },
+ "getTrustedIssuersPerPayment(address)": {
+ "notice": "Gets array of all trusted issuers set per paymentId."
+ },
+ "getVersionNumber()": {
+ "notice": "Returns the storage, major, minor, and patch version of the contract."
+ },
+ "initialize()": {
+ "notice": "Used in place of the constructor to allow the contract to be upgradable via proxy."
+ },
+ "removeDefaultTrustedIssuer(address,uint256)": {
+ "notice": "Remove an address from the defaultTrustedIssuers list."
+ },
+ "revoke(address)": {
+ "notice": "Revokes tokens for a sender who is redeeming a payment after it has expired."
+ },
+ "transfer(bytes32,address,uint256,uint256,address,uint256)": {
+ "notice": "Transfer tokens to a specific user. Supports both identity with privacy (an empty identifier and 0 minAttestations) and without (with identifier and minAttestations). Sets trustedIssuers to the issuers listed in `defaultTrustedIssuers`. (To override this and set custom trusted issuers, use `transferWithTrustedIssuers`.)"
+ },
+ "transferWithTrustedIssuers(bytes32,address,uint256,uint256,address,uint256,address[])": {
+ "notice": "Transfer tokens to a specific user. Supports both identity with privacy (an empty identifier and 0 minAttestations) and without (with identifier and attestations completed by trustedIssuers)."
+ },
+ "withdraw(address,uint8,bytes32,bytes32)": {
+ "notice": "Withdraws tokens for a verified user."
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/devtip/packages/react-app/abis/EscrowProxy.json b/devtip/packages/react-app/abis/EscrowProxy.json
new file mode 100644
index 00000000..57bba391
--- /dev/null
+++ b/devtip/packages/react-app/abis/EscrowProxy.json
@@ -0,0 +1,332 @@
+{
+ "contractName": "EscrowProxy",
+ "abi": [
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "implementation",
+ "type": "address"
+ }
+ ],
+ "name": "ImplementationSet",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ }
+ ],
+ "name": "OwnerSet",
+ "type": "event"
+ },
+ {
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "fallback"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "_getImplementation",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "implementation",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "_getOwner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "implementation",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes",
+ "name": "callbackData",
+ "type": "bytes"
+ }
+ ],
+ "name": "_setAndInitializeImplementation",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "implementation",
+ "type": "address"
+ }
+ ],
+ "name": "_setImplementation",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "_transferOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+ ],
+ "metadata": "{\"compiler\":{\"version\":\"0.5.13+commit.5b0b510c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ImplementationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnerSet\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callbackData\",\"type\":\"bytes\"}],\"name\":\"_setAndInitializeImplementation\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"_setImplementation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"_transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"_setAndInitializeImplementation(address,bytes)\":{\"details\":\"Throws if the initialization callback fails.If the target contract does not need initialization, use setImplementation instead.\",\"params\":{\"callbackData\":\"The abi-encoded function call to perform in the implementation contract.\",\"implementation\":\"Address of the new target contract.\"}},\"_setImplementation(address)\":{\"details\":\"If the target contract needs to be initialized, call setAndInitializeImplementation instead.\",\"params\":{\"implementation\":\"Address of the new target contract.\"}},\"_transferOwnership(address)\":{\"params\":{\"newOwner\":\"Address of the new owner account.\"}}}},\"userdoc\":{\"methods\":{\"_getImplementation()\":{\"notice\":\"Returns the implementation address.\"},\"_getOwner()\":{\"notice\":\"Returns the Proxy owner's address.\"},\"_setAndInitializeImplementation(address,bytes)\":{\"notice\":\"Sets the address of the implementation contract and calls into it.\"},\"_setImplementation(address)\":{\"notice\":\"Sets the address of the implementation contract.\"},\"_transferOwnership(address)\":{\"notice\":\"Transfers ownership of Proxy to a new owner.\"}}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/identity/proxies/EscrowProxy.sol\":\"EscrowProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"content\":\"pragma solidity ^0.5.5;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following \\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // According to EIP-1052, 0x0 is the value returned for not-yet created accounts\\n // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned\\n // for accounts without code, i.e. `keccak256('')`\\n bytes32 codehash;\\n bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;\\n // solhint-disable-next-line no-inline-assembly\\n assembly { codehash := extcodehash(account) }\\n return (codehash != accountHash && codehash != 0x0);\\n }\\n\\n /**\\n * @dev Converts an `address` into `address payable`. Note that this is\\n * simply a type cast: the actual underlying value is not changed.\\n *\\n * _Available since v2.4.0._\\n */\\n function toPayable(address account) internal pure returns (address payable) {\\n return address(uint160(account));\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n *\\n * _Available since v2.4.0._\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n // solhint-disable-next-line avoid-call-value\\n (bool success, ) = recipient.call.value(amount)(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n}\\n\",\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\"},\"project:/contracts/common/Proxy.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n/* solhint-disable no-inline-assembly, no-complex-fallback, avoid-low-level-calls */\\n\\nimport \\\"openzeppelin-solidity/contracts/utils/Address.sol\\\";\\n\\n/**\\n * @title A Proxy utilizing the Unstructured Storage pattern.\\n */\\ncontract Proxy {\\n // Used to store the address of the owner.\\n bytes32 private constant OWNER_POSITION = bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1);\\n // Used to store the address of the implementation contract.\\n bytes32 private constant IMPLEMENTATION_POSITION = bytes32(\\n uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1\\n );\\n\\n event OwnerSet(address indexed owner);\\n event ImplementationSet(address indexed implementation);\\n\\n constructor() public {\\n _setOwner(msg.sender);\\n }\\n\\n /**\\n * @notice Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n require(msg.sender == _getOwner(), \\\"sender was not owner\\\");\\n _;\\n }\\n\\n /**\\n * @notice Delegates calls to the implementation contract.\\n */\\n function() external payable {\\n bytes32 implementationPosition = IMPLEMENTATION_POSITION;\\n\\n address implementationAddress;\\n\\n // Load the address of the implementation contract from an explicit storage slot.\\n assembly {\\n implementationAddress := sload(implementationPosition)\\n }\\n\\n // Avoid checking if address is a contract or executing delegated call when\\n // implementation address is 0x0\\n require(implementationAddress != address(0), \\\"No Implementation set\\\");\\n require(Address.isContract(implementationAddress), \\\"Invalid contract address\\\");\\n\\n assembly {\\n // Extract the position of the transaction data (i.e. function ID and arguments).\\n let newCallDataPosition := mload(0x40)\\n mstore(0x40, add(newCallDataPosition, calldatasize))\\n calldatacopy(newCallDataPosition, 0, calldatasize)\\n\\n // Call the smart contract at `implementationAddress` in the context of the proxy contract,\\n // with the same msg.sender and value.\\n let delegatecallSuccess := delegatecall(\\n gas,\\n implementationAddress,\\n newCallDataPosition,\\n calldatasize,\\n 0,\\n 0\\n )\\n\\n // Copy the return value of the call so it can be returned.\\n let returnDataSize := returndatasize\\n let returnDataPosition := mload(0x40)\\n mstore(0x40, add(returnDataPosition, returnDataSize))\\n returndatacopy(returnDataPosition, 0, returnDataSize)\\n\\n // Revert or return depending on whether or not the call was successful.\\n switch delegatecallSuccess\\n case 0 {\\n revert(returnDataPosition, returnDataSize)\\n }\\n default {\\n return(returnDataPosition, returnDataSize)\\n }\\n }\\n }\\n\\n /**\\n * @notice Transfers ownership of Proxy to a new owner.\\n * @param newOwner Address of the new owner account.\\n */\\n function _transferOwnership(address newOwner) external onlyOwner {\\n _setOwner(newOwner);\\n }\\n\\n /**\\n * @notice Sets the address of the implementation contract and calls into it.\\n * @param implementation Address of the new target contract.\\n * @param callbackData The abi-encoded function call to perform in the implementation\\n * contract.\\n * @dev Throws if the initialization callback fails.\\n * @dev If the target contract does not need initialization, use\\n * setImplementation instead.\\n */\\n function _setAndInitializeImplementation(address implementation, bytes calldata callbackData)\\n external\\n payable\\n onlyOwner\\n {\\n _setImplementation(implementation);\\n bool success;\\n bytes memory returnValue;\\n (success, returnValue) = implementation.delegatecall(callbackData);\\n require(success, \\\"initialization callback failed\\\");\\n }\\n\\n /**\\n * @notice Returns the implementation address.\\n */\\n function _getImplementation() external view returns (address implementation) {\\n bytes32 implementationPosition = IMPLEMENTATION_POSITION;\\n // Load the address of the implementation contract from an explicit storage slot.\\n assembly {\\n implementation := sload(implementationPosition)\\n }\\n }\\n\\n /**\\n * @notice Sets the address of the implementation contract.\\n * @param implementation Address of the new target contract.\\n * @dev If the target contract needs to be initialized, call\\n * setAndInitializeImplementation instead.\\n */\\n function _setImplementation(address implementation) public onlyOwner {\\n bytes32 implementationPosition = IMPLEMENTATION_POSITION;\\n\\n require(Address.isContract(implementation), \\\"Invalid contract address\\\");\\n\\n // Store the address of the implementation contract in an explicit storage slot.\\n assembly {\\n sstore(implementationPosition, implementation)\\n }\\n\\n emit ImplementationSet(implementation);\\n }\\n\\n /**\\n * @notice Returns the Proxy owner's address.\\n */\\n function _getOwner() public view returns (address owner) {\\n bytes32 position = OWNER_POSITION;\\n // Load the address of the contract owner from an explicit storage slot.\\n assembly {\\n owner := sload(position)\\n }\\n }\\n\\n function _setOwner(address newOwner) internal {\\n require(newOwner != address(0), \\\"owner cannot be 0\\\");\\n bytes32 position = OWNER_POSITION;\\n // Store the address of the contract owner in an explicit storage slot.\\n assembly {\\n sstore(position, newOwner)\\n }\\n emit OwnerSet(newOwner);\\n }\\n}\\n\",\"keccak256\":\"0x650f2a079da45a71970749c9039dece5986835225035b29eca4df1c1dab0d6ac\"},\"project:/contracts/identity/proxies/EscrowProxy.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"../../common/Proxy.sol\\\";\\n\\n/* solhint-disable no-empty-blocks */\\ncontract EscrowProxy is Proxy {}\\n\",\"keccak256\":\"0x9504e7ba45793b6b55e56dfe09622b95e484dbc62823ab732636110dd2d349f6\"}},\"version\":1}",
+ "bytecode": "0x60806040526100133361001860201b60201c565b610148565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6f776e65722063616e6e6f74206265203000000000000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b90508181558173ffffffffffffffffffffffffffffffffffffffff167f50146d0e3c60aa1d17a70635b05494f864e86144a2201275021014fbf08bafe260405160405180910390a25050565b610a22806101576000396000f3fe60806040526004361061004a5760003560e01c806303386ba3146101e757806342404e0714610280578063bb913f41146102d7578063d29d44ee14610328578063f7e6af8014610379575b6000600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050600081549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610136576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4e6f20496d706c656d656e746174696f6e20736574000000000000000000000081525060200191505060405180910390fd5b61013f816103d0565b6101b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420636f6e74726163742061646472657373000000000000000081525060200191505060405180910390fd5b60405136810160405236600082376000803683855af43d604051818101604052816000823e82600081146101e3578282f35b8282fd5b61027e600480360360408110156101fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561023a57600080fd5b82018360208201111561024c57600080fd5b8035906020019184600183028401116401000000008311171561026e57600080fd5b909192939192939050505061041b565b005b34801561028c57600080fd5b506102956105c1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e357600080fd5b50610326600480360360208110156102fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061060d565b005b34801561033457600080fd5b506103776004803603602081101561034b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107bd565b005b34801561038557600080fd5b5061038e610871565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561041257506000801b8214155b92505050919050565b610423610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6104cc8361060d565b600060608473ffffffffffffffffffffffffffffffffffffffff168484604051808383808284378083019250505092505050600060405180830381855af49150503d8060008114610539576040519150601f19603f3d011682016040523d82523d6000602084013e61053e565b606091505b508092508193505050816105ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f696e697469616c697a6174696f6e2063616c6c6261636b206661696c6564000081525060200191505060405180910390fd5b5050505050565b600080600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050805491505090565b610615610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050610701826103d0565b610773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420636f6e74726163742061646472657373000000000000000081525060200191505060405180910390fd5b8181558173ffffffffffffffffffffffffffffffffffffffff167fab64f92ab780ecbf4f3866f57cee465ff36c89450dcce20237ca7a8d81fb7d1360405160405180910390a25050565b6107c5610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610865576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b61086e816108bd565b50565b600080600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b9050805491505090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6f776e65722063616e6e6f74206265203000000000000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b90508181558173ffffffffffffffffffffffffffffffffffffffff167f50146d0e3c60aa1d17a70635b05494f864e86144a2201275021014fbf08bafe260405160405180910390a2505056fea265627a7a723158204c6ef2ad1cfbf018a7aca71ce3223281aa4be0e8225f532322c794883a90395d64736f6c634300050d0032",
+ "deployedBytecode": "0x60806040526004361061004a5760003560e01c806303386ba3146101e757806342404e0714610280578063bb913f41146102d7578063d29d44ee14610328578063f7e6af8014610379575b6000600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050600081549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610136576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4e6f20496d706c656d656e746174696f6e20736574000000000000000000000081525060200191505060405180910390fd5b61013f816103d0565b6101b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420636f6e74726163742061646472657373000000000000000081525060200191505060405180910390fd5b60405136810160405236600082376000803683855af43d604051818101604052816000823e82600081146101e3578282f35b8282fd5b61027e600480360360408110156101fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561023a57600080fd5b82018360208201111561024c57600080fd5b8035906020019184600183028401116401000000008311171561026e57600080fd5b909192939192939050505061041b565b005b34801561028c57600080fd5b506102956105c1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e357600080fd5b50610326600480360360208110156102fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061060d565b005b34801561033457600080fd5b506103776004803603602081101561034b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107bd565b005b34801561038557600080fd5b5061038e610871565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561041257506000801b8214155b92505050919050565b610423610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6104cc8361060d565b600060608473ffffffffffffffffffffffffffffffffffffffff168484604051808383808284378083019250505092505050600060405180830381855af49150503d8060008114610539576040519150601f19603f3d011682016040523d82523d6000602084013e61053e565b606091505b508092508193505050816105ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f696e697469616c697a6174696f6e2063616c6c6261636b206661696c6564000081525060200191505060405180910390fd5b5050505050565b600080600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050805491505090565b610615610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050610701826103d0565b610773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420636f6e74726163742061646472657373000000000000000081525060200191505060405180910390fd5b8181558173ffffffffffffffffffffffffffffffffffffffff167fab64f92ab780ecbf4f3866f57cee465ff36c89450dcce20237ca7a8d81fb7d1360405160405180910390a25050565b6107c5610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610865576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b61086e816108bd565b50565b600080600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b9050805491505090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6f776e65722063616e6e6f74206265203000000000000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b90508181558173ffffffffffffffffffffffffffffffffffffffff167f50146d0e3c60aa1d17a70635b05494f864e86144a2201275021014fbf08bafe260405160405180910390a2505056fea265627a7a723158204c6ef2ad1cfbf018a7aca71ce3223281aa4be0e8225f532322c794883a90395d64736f6c634300050d0032",
+ "sourceMap": "98:32:107:-;;;724:21:22;734:10;724:9;;;:21;;:::i;:::-;98:32:107;;5050:307:22;5130:1;5110:22;;:8;:22;;;;5102:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5160:16;400:1;364:32;;;;;;;;;;;;;;;;;;;356:41;;:45;348:54;;5160:33;;5309:8;5299;5292:26;5343:8;5334:18;;;;;;;;;;;;5050:307;;:::o;98:32:107:-;;;;;;;",
+ "deployedSourceMap": "98:32:107:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1041:30:22;586:1;541:41;;;;;;;;;;;;;;;;;;;533:50;;:54;520:71;;1041:56;;1104:29;1274:22;1268:29;1243:54;;1467:1;1434:35;;:21;:35;;;;1426:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1509:41;1528:21;1509:18;:41::i;:::-;1501:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1724:4;1718:11;1774:12;1753:19;1749:38;1743:4;1736:52;1832:12;1829:1;1808:19;1795:50;2151:1;2140;2118:12;2089:19;2058:21;2045:3;2023:137;2256:14;2309:4;2303:11;2358:14;2338:18;2334:39;2328:4;2321:53;2419:14;2416:1;2396:18;2381:53;2528:19;2561:1;2556:71;;;;2683:14;2663:18;2656:42;2556:71;2602:14;2582:18;2575:42;3358:356;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3358:356:22;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;3358:356:22;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3358:356:22;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3358:356:22;;;;;;;;;;;;:::i;:::-;;3779:305;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3779:305:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4333:419;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4333:419:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4333:419:22;;;;;;;;;;;;;;;;;;;:::i;:::-;;2847:95;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2847:95:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2847:95:22;;;;;;;;;;;;;;;;;;;:::i;:::-;;4816:230;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4816:230:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;686:610:8;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o;3358:356:22:-;882:11;:9;:11::i;:::-;868:25;;:10;:25;;;860:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3499:34;3518:14;3499:18;:34::i;:::-;3539:12;3557:24;3612:14;:27;;3640:12;;3612:41;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;3612:41:22;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3587:66:22;;;;;;;;3667:7;3659:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;924:1;;3358:356;;;:::o;3779:305::-;3832:22;3862:30;586:1;541:41;;;;;;;;;;;;;;;;;;;533:50;;:54;520:71;;3862:56;;4051:22;4045:29;4027:47;;4019:61;;:::o;4333:419::-;882:11;:9;:11::i;:::-;868:25;;:10;:25;;;860:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4408:30;586:1;541:41;;;;;;;;;;;;;;;;;;;533:50;;:54;520:71;;4408:56;;4479:34;4498:14;4479:18;:34::i;:::-;4471:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4682:14;4658:22;4651:46;4732:14;4714:33;;;;;;;;;;;;924:1;4333:419;:::o;2847:95::-;882:11;:9;:11::i;:::-;868:25;;:10;:25;;;860:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2918:19;2928:8;2918:9;:19::i;:::-;2847:95;:::o;4816:230::-;4858:13;4879:16;400:1;364:32;;;;;;;;;;;;;;;;;;;356:41;;:45;348:54;;4879:33;;5027:8;5021:15;5012:24;;5004:38;;:::o;5050:307::-;5130:1;5110:22;;:8;:22;;;;5102:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5160:16;400:1;364:32;;;;;;;;;;;;;;;;;;;356:41;;:45;348:54;;5160:33;;5309:8;5299;5292:26;5343:8;5334:18;;;;;;;;;;;;5050:307;;:::o",
+ "source": "pragma solidity ^0.5.13;\n\nimport \"../../common/Proxy.sol\";\n\n/* solhint-disable no-empty-blocks */\ncontract EscrowProxy is Proxy {}\n",
+ "sourcePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/identity/proxies/EscrowProxy.sol",
+ "ast": {
+ "absolutePath": "project:/contracts/identity/proxies/EscrowProxy.sol",
+ "exportedSymbols": {
+ "EscrowProxy": [
+ 36211
+ ]
+ },
+ "id": 36212,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 36207,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".13"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:107"
+ },
+ {
+ "absolutePath": "project:/contracts/common/Proxy.sol",
+ "file": "../../common/Proxy.sol",
+ "id": 36208,
+ "nodeType": "ImportDirective",
+ "scope": 36212,
+ "sourceUnit": 6778,
+ "src": "26:32:107",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "baseContracts": [
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 36209,
+ "name": "Proxy",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 6777,
+ "src": "122:5:107",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Proxy_$6777",
+ "typeString": "contract Proxy"
+ }
+ },
+ "id": 36210,
+ "nodeType": "InheritanceSpecifier",
+ "src": "122:5:107"
+ }
+ ],
+ "contractDependencies": [
+ 6777
+ ],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "id": 36211,
+ "linearizedBaseContracts": [
+ 36211,
+ 6777
+ ],
+ "name": "EscrowProxy",
+ "nodeType": "ContractDefinition",
+ "nodes": [],
+ "scope": 36212,
+ "src": "98:32:107"
+ }
+ ],
+ "src": "0:131:107"
+ },
+ "legacyAST": {
+ "attributes": {
+ "absolutePath": "project:/contracts/identity/proxies/EscrowProxy.sol",
+ "exportedSymbols": {
+ "EscrowProxy": [
+ 36211
+ ]
+ }
+ },
+ "children": [
+ {
+ "attributes": {
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".13"
+ ]
+ },
+ "id": 36207,
+ "name": "PragmaDirective",
+ "src": "0:24:107"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 6778,
+ "absolutePath": "project:/contracts/common/Proxy.sol",
+ "file": "../../common/Proxy.sol",
+ "scope": 36212,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 36208,
+ "name": "ImportDirective",
+ "src": "26:32:107"
+ },
+ {
+ "attributes": {
+ "contractDependencies": [
+ 6777
+ ],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "linearizedBaseContracts": [
+ 36211,
+ 6777
+ ],
+ "name": "EscrowProxy",
+ "nodes": [
+ null
+ ],
+ "scope": 36212
+ },
+ "children": [
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "Proxy",
+ "referencedDeclaration": 6777,
+ "type": "contract Proxy"
+ },
+ "id": 36209,
+ "name": "UserDefinedTypeName",
+ "src": "122:5:107"
+ }
+ ],
+ "id": 36210,
+ "name": "InheritanceSpecifier",
+ "src": "122:5:107"
+ }
+ ],
+ "id": 36211,
+ "name": "ContractDefinition",
+ "src": "98:32:107"
+ }
+ ],
+ "id": 36212,
+ "name": "SourceUnit",
+ "src": "0:131:107"
+ },
+ "compiler": {
+ "name": "solc",
+ "version": "0.5.13+commit.5b0b510c.Emscripten.clang"
+ },
+ "networks": {},
+ "schemaVersion": "3.4.7",
+ "updatedAt": "2022-09-23T16:17:10.955Z",
+ "devdoc": {
+ "methods": {
+ "_setAndInitializeImplementation(address,bytes)": {
+ "details": "Throws if the initialization callback fails.If the target contract does not need initialization, use setImplementation instead.",
+ "params": {
+ "callbackData": "The abi-encoded function call to perform in the implementation contract.",
+ "implementation": "Address of the new target contract."
+ }
+ },
+ "_setImplementation(address)": {
+ "details": "If the target contract needs to be initialized, call setAndInitializeImplementation instead.",
+ "params": {
+ "implementation": "Address of the new target contract."
+ }
+ },
+ "_transferOwnership(address)": {
+ "params": {
+ "newOwner": "Address of the new owner account."
+ }
+ }
+ }
+ },
+ "userdoc": {
+ "methods": {
+ "_getImplementation()": {
+ "notice": "Returns the implementation address."
+ },
+ "_getOwner()": {
+ "notice": "Returns the Proxy owner's address."
+ },
+ "_setAndInitializeImplementation(address,bytes)": {
+ "notice": "Sets the address of the implementation contract and calls into it."
+ },
+ "_setImplementation(address)": {
+ "notice": "Sets the address of the implementation contract."
+ },
+ "_transferOwnership(address)": {
+ "notice": "Transfers ownership of Proxy to a new owner."
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/devtip/packages/react-app/abis/FederatedAttestations.json b/devtip/packages/react-app/abis/FederatedAttestations.json
new file mode 100644
index 00000000..f5e244c2
--- /dev/null
+++ b/devtip/packages/react-app/abis/FederatedAttestations.json
@@ -0,0 +1,33477 @@
+{
+ "contractName": "FederatedAttestations",
+ "abi": [
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "test",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "identifier",
+ "type": "bytes32"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "issuer",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint64",
+ "name": "issuedOn",
+ "type": "uint64"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint64",
+ "name": "publishedOn",
+ "type": "uint64"
+ }
+ ],
+ "name": "AttestationRegistered",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "identifier",
+ "type": "bytes32"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "issuer",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint64",
+ "name": "issuedOn",
+ "type": "uint64"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint64",
+ "name": "publishedOn",
+ "type": "uint64"
+ }
+ ],
+ "name": "AttestationRevoked",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "bytes32",
+ "name": "eip712DomainSeparator",
+ "type": "bytes32"
+ }
+ ],
+ "name": "EIP712DomainSeparatorSet",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousOwner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "OwnershipTransferred",
+ "type": "event"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "EIP712_OWNERSHIP_ATTESTATION_TYPEHASH",
+ "outputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "MAX_ATTESTATIONS_PER_IDENTIFIER",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "MAX_IDENTIFIERS_PER_ADDRESS",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "addressToIdentifiers",
+ "outputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "eip712DomainSeparator",
+ "outputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "name": "identifierToAttestations",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "internalType": "uint64",
+ "name": "issuedOn",
+ "type": "uint64"
+ },
+ {
+ "internalType": "uint64",
+ "name": "publishedOn",
+ "type": "uint64"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "initialized",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isOwner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "owner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "registryContract",
+ "outputs": [
+ {
+ "internalType": "contract IRegistry",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "renounceOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "name": "revokedAttestations",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "transferOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "getVersionNumber",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "pure",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "initialize",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "identifier",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "uint64",
+ "name": "issuedOn",
+ "type": "uint64"
+ }
+ ],
+ "name": "registerAttestationAsIssuer",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "identifier",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "address",
+ "name": "issuer",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "internalType": "uint64",
+ "name": "issuedOn",
+ "type": "uint64"
+ },
+ {
+ "internalType": "uint8",
+ "name": "v",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "r",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "s",
+ "type": "bytes32"
+ }
+ ],
+ "name": "registerAttestation",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "identifier",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "address",
+ "name": "issuer",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "revokeAttestation",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "issuer",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes32[]",
+ "name": "identifiers",
+ "type": "bytes32[]"
+ },
+ {
+ "internalType": "address[]",
+ "name": "accounts",
+ "type": "address[]"
+ }
+ ],
+ "name": "batchRevokeAttestations",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "identifier",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "address[]",
+ "name": "trustedIssuers",
+ "type": "address[]"
+ }
+ ],
+ "name": "lookupAttestations",
+ "outputs": [
+ {
+ "internalType": "uint256[]",
+ "name": "countsPerIssuer",
+ "type": "uint256[]"
+ },
+ {
+ "internalType": "address[]",
+ "name": "accounts",
+ "type": "address[]"
+ },
+ {
+ "internalType": "address[]",
+ "name": "signers",
+ "type": "address[]"
+ },
+ {
+ "internalType": "uint64[]",
+ "name": "issuedOns",
+ "type": "uint64[]"
+ },
+ {
+ "internalType": "uint64[]",
+ "name": "publishedOns",
+ "type": "uint64[]"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "address[]",
+ "name": "trustedIssuers",
+ "type": "address[]"
+ }
+ ],
+ "name": "lookupIdentifiers",
+ "outputs": [
+ {
+ "internalType": "uint256[]",
+ "name": "countsPerIssuer",
+ "type": "uint256[]"
+ },
+ {
+ "internalType": "bytes32[]",
+ "name": "identifiers",
+ "type": "bytes32[]"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "identifier",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "address",
+ "name": "issuer",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "internalType": "uint64",
+ "name": "issuedOn",
+ "type": "uint64"
+ },
+ {
+ "internalType": "uint8",
+ "name": "v",
+ "type": "uint8"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "r",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "s",
+ "type": "bytes32"
+ }
+ ],
+ "name": "validateAttestationSig",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "identifier",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "address",
+ "name": "issuer",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "signer",
+ "type": "address"
+ },
+ {
+ "internalType": "uint64",
+ "name": "issuedOn",
+ "type": "uint64"
+ }
+ ],
+ "name": "getUniqueAttestationHash",
+ "outputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "pure",
+ "type": "function"
+ }
+ ],
+ "metadata": "{\"compiler\":{\"version\":\"0.5.13+commit.5b0b510c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"test\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"issuedOn\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"publishedOn\",\"type\":\"uint64\"}],\"name\":\"AttestationRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"issuedOn\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"publishedOn\",\"type\":\"uint64\"}],\"name\":\"AttestationRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"eip712DomainSeparator\",\"type\":\"bytes32\"}],\"name\":\"EIP712DomainSeparatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"EIP712_OWNERSHIP_ATTESTATION_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_ATTESTATIONS_PER_IDENTIFIER\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_IDENTIFIERS_PER_ADDRESS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"addressToIdentifiers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"identifiers\",\"type\":\"bytes32[]\"},{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"batchRevokeAttestations\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"eip712DomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"issuedOn\",\"type\":\"uint64\"}],\"name\":\"getUniqueAttestationHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getVersionNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"identifierToAttestations\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"issuedOn\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"publishedOn\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"trustedIssuers\",\"type\":\"address[]\"}],\"name\":\"lookupAttestations\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"countsPerIssuer\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"internalType\":\"uint64[]\",\"name\":\"issuedOns\",\"type\":\"uint64[]\"},{\"internalType\":\"uint64[]\",\"name\":\"publishedOns\",\"type\":\"uint64[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"trustedIssuers\",\"type\":\"address[]\"}],\"name\":\"lookupIdentifiers\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"countsPerIssuer\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"identifiers\",\"type\":\"bytes32[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"issuedOn\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"registerAttestation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"issuedOn\",\"type\":\"uint64\"}],\"name\":\"registerAttestationAsIssuer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"registryContract\",\"outputs\":[{\"internalType\":\"contract IRegistry\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeAttestation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"revokedAttestations\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"issuer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"issuedOn\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"validateAttestationSig\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"batchRevokeAttestations(address,bytes32[],address[])\":{\"details\":\"Throws if the number of identifiers and accounts is not the sameThrows if sender is not the issuer or currently registered signer of issuerThrows if an attestation is not found for identifiers[i] <-> accounts[i]\",\"params\":{\"accounts\":\"Addresses of the accounts mapped to the identifiers at the same indices\",\"identifiers\":\"Hash of the identifiers\",\"issuer\":\"Address of the issuer of all attestations to be revoked\"}},\"constructor\":{\"params\":{\"test\":\"Set to true to skip implementation initialization\"}},\"getVersionNumber()\":{\"return\":\"The storage, major, minor, and patch version of the contract.\"},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"lookupAttestations(bytes32,address[])\":{\"details\":\"Adds attestation info to the arrays in order of provided trustedIssuersExpectation that only one attestation exists per (identifier, issuer, account)\",\"params\":{\"identifier\":\"Hash of the identifier\",\"trustedIssuers\":\"Array of n issuers whose attestations will be included\"},\"return\":\"countsPerIssuer Array of number of attestations returned per issuer For m (== sum([0])) found attestations: accounts Array of m accounts signers Array of m signersissuedOns Array of m issuedOnspublishedOns Array of m publishedOns\"},\"lookupIdentifiers(address,address[])\":{\"details\":\"Adds identifier info to the arrays in order of provided trustedIssuersExpectation that only one attestation exists per (identifier, issuer, account)\",\"params\":{\"account\":\"Address of the account\",\"trustedIssuers\":\"Array of n issuers whose identifier mappings will be used\"},\"return\":\"countsPerIssuer Array of number of identifiers returned per issueridentifiers Array (length == sum([0])) of identifiers\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"registerAttestation(bytes32,address,address,address,uint64,uint8,bytes32,bytes32)\":{\"details\":\"Throws if an attestation with the same (identifier, issuer, account) already exists\",\"params\":{\"account\":\"Address of the account being mapped to the identifier\",\"identifier\":\"Hash of the identifier to be attested\",\"issuedOn\":\"Time at which the issuer issued the attestation in Unix time \",\"issuer\":\"Address of the attestation issuer\",\"r\":\"Output value r of the ECDSA signature\",\"s\":\"Output value s of the ECDSA signature\",\"signer\":\"Address of the signer of the attestation\",\"v\":\"The recovery id of the incoming ECDSA signature\"}},\"registerAttestationAsIssuer(bytes32,address,uint64)\":{\"details\":\"Attestation signer and issuer in storage is set to msg.senderThrows if an attestation with the same (identifier, issuer, account) already exists\",\"params\":{\"account\":\"Address of the account being mapped to the identifier\",\"identifier\":\"Hash of the identifier to be attested\",\"issuedOn\":\"Time at which the issuer issued the attestation in Unix time \"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"revokeAttestation(bytes32,address,address)\":{\"details\":\"Throws if sender is not the issuer, signer, or account\",\"params\":{\"account\":\"Address of the account mapped to the identifier\",\"identifier\":\"Hash of the identifier to be revoked\",\"issuer\":\"Address of the attestation issuer\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"validateAttestationSig(bytes32,address,address,address,uint64,uint8,bytes32,bytes32)\":{\"details\":\"Throws if attestation has been revokedThrows if signer is not an authorized AttestationSigner of the issuer\",\"params\":{\"account\":\"Address of the account being mapped to the identifier\",\"identifier\":\"Hash of the identifier to be attested\",\"issuedOn\":\"Time at which the issuer issued the attestation in Unix time \",\"issuer\":\"Address of the attestation issuer\",\"r\":\"Output value r of the ECDSA signature\",\"s\":\"Output value s of the ECDSA signature\",\"signer\":\"Address of the signer of the attestation\",\"v\":\"The recovery id of the incoming ECDSA signature\"}}},\"title\":\"Contract mapping identifiers to accounts\"},\"userdoc\":{\"methods\":{\"batchRevokeAttestations(address,bytes32[],address[])\":{\"notice\":\"Revokes attestations [identifiers <-> accounts] from issuer\"},\"constructor\":\"Sets initialized == true on implementation contracts\",\"getVersionNumber()\":{\"notice\":\"Returns the storage, major, minor, and patch version of the contract.\"},\"initialize()\":{\"notice\":\"Used in place of the constructor to allow the contract to be upgradable via proxy.\"},\"lookupAttestations(bytes32,address[])\":{\"notice\":\"Returns info about attestations for `identifier` produced by signers of `trustedIssuers`\"},\"lookupIdentifiers(address,address[])\":{\"notice\":\"Returns identifiers mapped to `account` by signers of `trustedIssuers`\"},\"registerAttestation(bytes32,address,address,address,uint64,uint8,bytes32,bytes32)\":{\"notice\":\"Registers an attestation with a valid signature\"},\"registerAttestationAsIssuer(bytes32,address,uint64)\":{\"notice\":\"Registers an attestation directly from the issuer\"},\"revokeAttestation(bytes32,address,address)\":{\"notice\":\"Revokes an attestation \"},\"validateAttestationSig(bytes32,address,address,address,uint64,uint8,bytes32,bytes32)\":{\"notice\":\"Validates the given attestation and signature\"}}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/identity/FederatedAttestations.sol\":\"FederatedAttestations\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with GSN meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\ncontract Context {\\n // Empty internal constructor, to prevent people from mistakenly deploying\\n // an instance of this contract, which should be used via inheritance.\\n constructor () internal { }\\n // solhint-disable-previous-line no-empty-blocks\\n\\n function _msgSender() internal view returns (address payable) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view returns (bytes memory) {\\n this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\"},\"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n /**\\n * @dev Returns the address that signed a hashed message (`hash`) with\\n * `signature`. This address can then be used for verification purposes.\\n *\\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\\n * this function rejects them by requiring the `s` value to be in the lower\\n * half order, and the `v` value to be either 27 or 28.\\n *\\n * NOTE: This call _does not revert_ if the signature is invalid, or\\n * if the signer is otherwise unable to be retrieved. In those scenarios,\\n * the zero address is returned.\\n *\\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n * verification to be secure: it is possible to craft signatures that\\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n * this is by receiving a hash of the original message (which may otherwise\\n * be too long), and then calling {toEthSignedMessageHash} on it.\\n */\\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n // Check the signature length\\n if (signature.length != 65) {\\n return (address(0));\\n }\\n\\n // Divide the signature in r, s and v variables\\n bytes32 r;\\n bytes32 s;\\n uint8 v;\\n\\n // ecrecover takes the signature parameters, and the only way to get them\\n // currently is to use assembly.\\n // solhint-disable-next-line no-inline-assembly\\n assembly {\\n r := mload(add(signature, 0x20))\\n s := mload(add(signature, 0x40))\\n v := byte(0, mload(add(signature, 0x60)))\\n }\\n\\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n // the valid range for s in (281): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (282): v \\u2208 {27, 28}. Most\\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n //\\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n // these malleable signatures as well.\\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n return address(0);\\n }\\n\\n if (v != 27 && v != 28) {\\n return address(0);\\n }\\n\\n // If the signature is valid (and not malleable), return the signer address\\n return ecrecover(hash, v, r, s);\\n }\\n\\n /**\\n * @dev Returns an Ethereum Signed Message, created from a `hash`. This\\n * replicates the behavior of the\\n * https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign[`eth_sign`]\\n * JSON-RPC method.\\n *\\n * See {recover}.\\n */\\n function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {\\n // 32 is the length in bytes of hash,\\n // enforced by the type signature above\\n return keccak256(abi.encodePacked(\\\"\\\\x19Ethereum Signed Message:\\\\n32\\\", hash));\\n }\\n}\\n\",\"keccak256\":\"0xc89ea7e48ba477b1781b24ae963442fff1bb2af33b6178dad679a3fa2f5ab2de\"},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\\n * checks.\\n *\\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\\n * in bugs, because programmers usually assume that an overflow raises an\\n * error, which is the standard behavior in high level programming languages.\\n * `SafeMath` restores this intuition by reverting the transaction when an\\n * operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n */\\nlibrary SafeMath {\\n /**\\n * @dev Returns the addition of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\n * - Addition cannot overflow.\\n */\\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n uint256 c = a + b;\\n require(c >= a, \\\"SafeMath: addition overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `*` operator.\\n *\\n * Requirements:\\n * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n // benefit is lost if 'b' is also tested.\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n if (a == 0) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b != 0, errorMessage);\\n return a % b;\\n }\\n}\\n\",\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\"},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\nimport \\\"../GSN/Context.sol\\\";\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\ncontract Ownable is Context {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n constructor () internal {\\n address msgSender = _msgSender();\\n _owner = msgSender;\\n emit OwnershipTransferred(address(0), msgSender);\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n require(isOwner(), \\\"Ownable: caller is not the owner\\\");\\n _;\\n }\\n\\n /**\\n * @dev Returns true if the caller is the current owner.\\n */\\n function isOwner() public view returns (bool) {\\n return _msgSender() == _owner;\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions anymore. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby removing any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public onlyOwner {\\n emit OwnershipTransferred(_owner, address(0));\\n _owner = address(0);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public onlyOwner {\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n */\\n function _transferOwnership(address newOwner) internal {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n emit OwnershipTransferred(_owner, newOwner);\\n _owner = newOwner;\\n }\\n}\\n\",\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\"},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {ERC20Detailed}.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\"},\"openzeppelin-solidity/contracts/utils/SafeCast.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n *\\n * Can be combined with {SafeMath} to extend it to smaller types, by performing\\n * all math on `uint256` and then downcasting.\\n *\\n * _Available since v2.5.0._\\n */\\nlibrary SafeCast {\\n\\n /**\\n * @dev Returns the downcasted uint128 from uint256, reverting on\\n * overflow (when the input is greater than largest uint128).\\n *\\n * Counterpart to Solidity's `uint128` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 128 bits\\n */\\n function toUint128(uint256 value) internal pure returns (uint128) {\\n require(value < 2**128, \\\"SafeCast: value doesn\\\\'t fit in 128 bits\\\");\\n return uint128(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint64 from uint256, reverting on\\n * overflow (when the input is greater than largest uint64).\\n *\\n * Counterpart to Solidity's `uint64` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 64 bits\\n */\\n function toUint64(uint256 value) internal pure returns (uint64) {\\n require(value < 2**64, \\\"SafeCast: value doesn\\\\'t fit in 64 bits\\\");\\n return uint64(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint32 from uint256, reverting on\\n * overflow (when the input is greater than largest uint32).\\n *\\n * Counterpart to Solidity's `uint32` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 32 bits\\n */\\n function toUint32(uint256 value) internal pure returns (uint32) {\\n require(value < 2**32, \\\"SafeCast: value doesn\\\\'t fit in 32 bits\\\");\\n return uint32(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint16 from uint256, reverting on\\n * overflow (when the input is greater than largest uint16).\\n *\\n * Counterpart to Solidity's `uint16` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 16 bits\\n */\\n function toUint16(uint256 value) internal pure returns (uint16) {\\n require(value < 2**16, \\\"SafeCast: value doesn\\\\'t fit in 16 bits\\\");\\n return uint16(value);\\n }\\n\\n /**\\n * @dev Returns the downcasted uint8 from uint256, reverting on\\n * overflow (when the input is greater than largest uint8).\\n *\\n * Counterpart to Solidity's `uint8` operator.\\n *\\n * Requirements:\\n *\\n * - input must fit into 8 bits.\\n */\\n function toUint8(uint256 value) internal pure returns (uint8) {\\n require(value < 2**8, \\\"SafeCast: value doesn\\\\'t fit in 8 bits\\\");\\n return uint8(value);\\n }\\n}\\n\",\"keccak256\":\"0xb7353a57c9e371c85983df8997caf9bb6fa60c3744b34b2bfcf4faa52d06eaec\"},\"project:/contracts/common/Initializable.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ncontract Initializable {\\n bool public initialized;\\n\\n constructor(bool testingDeployment) public {\\n if (!testingDeployment) {\\n initialized = true;\\n }\\n }\\n\\n modifier initializer() {\\n require(!initialized, \\\"contract already initialized\\\");\\n initialized = true;\\n _;\\n }\\n}\\n\",\"keccak256\":\"0xad98825b5d3181f4ce2d2dbe84adeb0cd7960fd80fafb0813539d6d96ba42ab8\"},\"project:/contracts/common/Signatures.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\\\";\\n\\nlibrary Signatures {\\n /**\\n * @notice Given a signed address, returns the signer of the address.\\n * @param message The address that was signed.\\n * @param v The recovery id of the incoming ECDSA signature.\\n * @param r Output value r of the ECDSA signature.\\n * @param s Output value s of the ECDSA signature.\\n */\\n function getSignerOfAddress(address message, uint8 v, bytes32 r, bytes32 s)\\n public\\n pure\\n returns (address)\\n {\\n bytes32 hash = keccak256(abi.encodePacked(message));\\n return getSignerOfMessageHash(hash, v, r, s);\\n }\\n\\n /**\\n * @notice Given a message hash, returns the signer of the address.\\n * @param messageHash The hash of a message.\\n * @param v The recovery id of the incoming ECDSA signature.\\n * @param r Output value r of the ECDSA signature.\\n * @param s Output value s of the ECDSA signature.\\n */\\n function getSignerOfMessageHash(bytes32 messageHash, uint8 v, bytes32 r, bytes32 s)\\n public\\n pure\\n returns (address)\\n {\\n bytes memory signature = new bytes(65);\\n // Concatenate (r, s, v) into signature.\\n assembly {\\n mstore(add(signature, 32), r)\\n mstore(add(signature, 64), s)\\n mstore8(add(signature, 96), v)\\n }\\n bytes32 prefixedHash = ECDSA.toEthSignedMessageHash(messageHash);\\n return ECDSA.recover(prefixedHash, signature);\\n }\\n\\n /**\\n * @notice Given a domain separator and a structHash, construct the typed data hash\\n * @param eip712DomainSeparator Context specific domain separator\\n * @param structHash hash of the typed data struct\\n * @return The EIP712 typed data hash\\n */\\n function toEthSignedTypedDataHash(bytes32 eip712DomainSeparator, bytes32 structHash)\\n public\\n pure\\n returns (bytes32)\\n {\\n return keccak256(abi.encodePacked(\\\"\\\\x19\\\\x01\\\", eip712DomainSeparator, structHash));\\n }\\n\\n /**\\n * @notice Given a domain separator and a structHash and a signature return the signer\\n * @param eip712DomainSeparator Context specific domain separator\\n * @param structHash hash of the typed data struct\\n * @param v The recovery id of the incoming ECDSA signature.\\n * @param r Output value r of the ECDSA signature.\\n * @param s Output value s of the ECDSA signature.\\n */\\n function getSignerOfTypedDataHash(\\n bytes32 eip712DomainSeparator,\\n bytes32 structHash,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) public pure returns (address) {\\n bytes memory signature = new bytes(65);\\n // Concatenate (r, s, v) into signature.\\n assembly {\\n mstore(add(signature, 32), r)\\n mstore(add(signature, 64), s)\\n mstore8(add(signature, 96), v)\\n }\\n bytes32 prefixedHash = toEthSignedTypedDataHash(eip712DomainSeparator, structHash);\\n return ECDSA.recover(prefixedHash, signature);\\n }\\n}\\n\",\"keccak256\":\"0xb11ccc01ac5d81c5496828a92536cfc07378e87c0517fe6f8b429a96c41cb21e\"},\"project:/contracts/common/UsingRegistryV2.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"openzeppelin-solidity/contracts/ownership/Ownable.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\\\";\\n\\nimport \\\"./interfaces/IAccounts.sol\\\";\\nimport \\\"./interfaces/IFeeCurrencyWhitelist.sol\\\";\\nimport \\\"./interfaces/IFreezer.sol\\\";\\nimport \\\"./interfaces/IRegistry.sol\\\";\\n\\nimport \\\"../governance/interfaces/IElection.sol\\\";\\nimport \\\"../governance/interfaces/IGovernance.sol\\\";\\nimport \\\"../governance/interfaces/ILockedGold.sol\\\";\\nimport \\\"../governance/interfaces/IValidators.sol\\\";\\n\\nimport \\\"../identity/interfaces/IRandom.sol\\\";\\nimport \\\"../identity/interfaces/IAttestations.sol\\\";\\nimport \\\"../identity/interfaces/IFederatedAttestations.sol\\\";\\n\\nimport \\\"../stability/interfaces/IExchange.sol\\\";\\nimport \\\"../stability/interfaces/IReserve.sol\\\";\\nimport \\\"../stability/interfaces/ISortedOracles.sol\\\";\\nimport \\\"../stability/interfaces/IStableToken.sol\\\";\\n\\ncontract UsingRegistryV2 {\\n address internal constant registryAddress = 0x000000000000000000000000000000000000ce10;\\n IRegistry public constant registryContract = IRegistry(registryAddress);\\n\\n bytes32 internal constant ACCOUNTS_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Accounts\\\"));\\n bytes32 internal constant ATTESTATIONS_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Attestations\\\"));\\n bytes32 internal constant DOWNTIME_SLASHER_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"DowntimeSlasher\\\")\\n );\\n bytes32 internal constant DOUBLE_SIGNING_SLASHER_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"DoubleSigningSlasher\\\")\\n );\\n bytes32 internal constant ELECTION_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Election\\\"));\\n bytes32 internal constant EXCHANGE_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Exchange\\\"));\\n bytes32 internal constant EXCHANGE_EURO_REGISTRY_ID = keccak256(abi.encodePacked(\\\"ExchangeEUR\\\"));\\n bytes32 internal constant EXCHANGE_REAL_REGISTRY_ID = keccak256(abi.encodePacked(\\\"ExchangeBRL\\\"));\\n\\n bytes32 internal constant FEE_CURRENCY_WHITELIST_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"FeeCurrencyWhitelist\\\")\\n );\\n bytes32 internal constant FEDERATED_ATTESTATIONS_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"FederatedAttestations\\\")\\n );\\n bytes32 internal constant FREEZER_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Freezer\\\"));\\n bytes32 internal constant GOLD_TOKEN_REGISTRY_ID = keccak256(abi.encodePacked(\\\"GoldToken\\\"));\\n bytes32 internal constant GOVERNANCE_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Governance\\\"));\\n bytes32 internal constant GOVERNANCE_SLASHER_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"GovernanceSlasher\\\")\\n );\\n bytes32 internal constant LOCKED_GOLD_REGISTRY_ID = keccak256(abi.encodePacked(\\\"LockedGold\\\"));\\n bytes32 internal constant RESERVE_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Reserve\\\"));\\n bytes32 internal constant RANDOM_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Random\\\"));\\n bytes32 internal constant SORTED_ORACLES_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"SortedOracles\\\")\\n );\\n bytes32 internal constant STABLE_TOKEN_REGISTRY_ID = keccak256(abi.encodePacked(\\\"StableToken\\\"));\\n bytes32 internal constant STABLE_EURO_TOKEN_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"StableTokenEUR\\\")\\n );\\n bytes32 internal constant STABLE_REAL_TOKEN_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"StableTokenBRL\\\")\\n );\\n bytes32 internal constant VALIDATORS_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Validators\\\"));\\n\\n modifier onlyRegisteredContract(bytes32 identifierHash) {\\n require(\\n registryContract.getAddressForOrDie(identifierHash) == msg.sender,\\n \\\"only registered contract\\\"\\n );\\n _;\\n }\\n\\n modifier onlyRegisteredContracts(bytes32[] memory identifierHashes) {\\n require(registryContract.isOneOf(identifierHashes, msg.sender), \\\"only registered contracts\\\");\\n _;\\n }\\n\\n function getAccounts() internal view returns (IAccounts) {\\n return IAccounts(registryContract.getAddressForOrDie(ACCOUNTS_REGISTRY_ID));\\n }\\n\\n function getAttestations() internal view returns (IAttestations) {\\n return IAttestations(registryContract.getAddressForOrDie(ATTESTATIONS_REGISTRY_ID));\\n }\\n\\n function getElection() internal view returns (IElection) {\\n return IElection(registryContract.getAddressForOrDie(ELECTION_REGISTRY_ID));\\n }\\n\\n function getExchange() internal view returns (IExchange) {\\n return IExchange(registryContract.getAddressForOrDie(EXCHANGE_REGISTRY_ID));\\n }\\n\\n function getExchangeDollar() internal view returns (IExchange) {\\n return getExchange();\\n }\\n\\n function getExchangeEuro() internal view returns (IExchange) {\\n return IExchange(registryContract.getAddressForOrDie(EXCHANGE_EURO_REGISTRY_ID));\\n }\\n\\n function getExchangeREAL() internal view returns (IExchange) {\\n return IExchange(registryContract.getAddressForOrDie(EXCHANGE_REAL_REGISTRY_ID));\\n }\\n\\n function getFeeCurrencyWhitelistRegistry() internal view returns (IFeeCurrencyWhitelist) {\\n return\\n IFeeCurrencyWhitelist(\\n registryContract.getAddressForOrDie(FEE_CURRENCY_WHITELIST_REGISTRY_ID)\\n );\\n }\\n\\n function getFederatedAttestations() internal view returns (IFederatedAttestations) {\\n return\\n IFederatedAttestations(\\n registryContract.getAddressForOrDie(FEDERATED_ATTESTATIONS_REGISTRY_ID)\\n );\\n }\\n\\n function getFreezer() internal view returns (IFreezer) {\\n return IFreezer(registryContract.getAddressForOrDie(FREEZER_REGISTRY_ID));\\n }\\n\\n function getGoldToken() internal view returns (IERC20) {\\n return IERC20(registryContract.getAddressForOrDie(GOLD_TOKEN_REGISTRY_ID));\\n }\\n\\n function getGovernance() internal view returns (IGovernance) {\\n return IGovernance(registryContract.getAddressForOrDie(GOVERNANCE_REGISTRY_ID));\\n }\\n\\n function getLockedGold() internal view returns (ILockedGold) {\\n return ILockedGold(registryContract.getAddressForOrDie(LOCKED_GOLD_REGISTRY_ID));\\n }\\n\\n function getRandom() internal view returns (IRandom) {\\n return IRandom(registryContract.getAddressForOrDie(RANDOM_REGISTRY_ID));\\n }\\n\\n function getReserve() internal view returns (IReserve) {\\n return IReserve(registryContract.getAddressForOrDie(RESERVE_REGISTRY_ID));\\n }\\n\\n function getSortedOracles() internal view returns (ISortedOracles) {\\n return ISortedOracles(registryContract.getAddressForOrDie(SORTED_ORACLES_REGISTRY_ID));\\n }\\n\\n function getStableToken() internal view returns (IStableToken) {\\n return IStableToken(registryContract.getAddressForOrDie(STABLE_TOKEN_REGISTRY_ID));\\n }\\n\\n function getStableDollarToken() internal view returns (IStableToken) {\\n return getStableToken();\\n }\\n\\n function getStableEuroToken() internal view returns (IStableToken) {\\n return IStableToken(registryContract.getAddressForOrDie(STABLE_EURO_TOKEN_REGISTRY_ID));\\n }\\n\\n function getStableRealToken() internal view returns (IStableToken) {\\n return IStableToken(registryContract.getAddressForOrDie(STABLE_REAL_TOKEN_REGISTRY_ID));\\n }\\n\\n function getValidators() internal view returns (IValidators) {\\n return IValidators(registryContract.getAddressForOrDie(VALIDATORS_REGISTRY_ID));\\n }\\n}\\n\",\"keccak256\":\"0x074e1bd4e0d4a0010ef904a13af1da8590b998ce568054b1f10a2a7af4120372\"},\"project:/contracts/common/interfaces/IAccounts.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IAccounts {\\n function isAccount(address) external view returns (bool);\\n function voteSignerToAccount(address) external view returns (address);\\n function validatorSignerToAccount(address) external view returns (address);\\n function attestationSignerToAccount(address) external view returns (address);\\n function signerToAccount(address) external view returns (address);\\n function getAttestationSigner(address) external view returns (address);\\n function getValidatorSigner(address) external view returns (address);\\n function getVoteSigner(address) external view returns (address);\\n function hasAuthorizedVoteSigner(address) external view returns (bool);\\n function hasAuthorizedValidatorSigner(address) external view returns (bool);\\n function hasAuthorizedAttestationSigner(address) external view returns (bool);\\n\\n function setAccountDataEncryptionKey(bytes calldata) external;\\n function setMetadataURL(string calldata) external;\\n function setName(string calldata) external;\\n function setWalletAddress(address, uint8, bytes32, bytes32) external;\\n function setAccount(string calldata, bytes calldata, address, uint8, bytes32, bytes32) external;\\n\\n function getDataEncryptionKey(address) external view returns (bytes memory);\\n function getWalletAddress(address) external view returns (address);\\n function getMetadataURL(address) external view returns (string memory);\\n function batchGetMetadataURL(address[] calldata)\\n external\\n view\\n returns (uint256[] memory, bytes memory);\\n function getName(address) external view returns (string memory);\\n\\n function authorizeVoteSigner(address, uint8, bytes32, bytes32) external;\\n function authorizeValidatorSigner(address, uint8, bytes32, bytes32) external;\\n function authorizeValidatorSignerWithPublicKey(address, uint8, bytes32, bytes32, bytes calldata)\\n external;\\n function authorizeValidatorSignerWithKeys(\\n address,\\n uint8,\\n bytes32,\\n bytes32,\\n bytes calldata,\\n bytes calldata,\\n bytes calldata\\n ) external;\\n function authorizeAttestationSigner(address, uint8, bytes32, bytes32) external;\\n function createAccount() external returns (bool);\\n\\n function setPaymentDelegation(address, uint256) external;\\n function getPaymentDelegation(address) external view returns (address, uint256);\\n function isSigner(address, address, bytes32) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x1ec92ced98458b625f5cc7742e7487c6e9c0042ae86bbd4b5cec293363c543ee\"},\"project:/contracts/common/interfaces/ICeloVersionedContract.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface ICeloVersionedContract {\\n /**\\n * @notice Returns the storage, major, minor, and patch version of the contract.\\n * @return The storage, major, minor, and patch version of the contract.\\n */\\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256);\\n}\\n\",\"keccak256\":\"0x9f902faa66069500c7b5e8c9a53ca6afff99dfe6cd3915aa0f3c4fe6a9905ba5\"},\"project:/contracts/common/interfaces/IFeeCurrencyWhitelist.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IFeeCurrencyWhitelist {\\n function addToken(address) external;\\n function getWhitelist() external view returns (address[] memory);\\n}\\n\",\"keccak256\":\"0xd4711baf3e38a0abeb3ef48eaab21aeb917f5e0a185cf463fddeb4bf20277b68\"},\"project:/contracts/common/interfaces/IFreezer.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IFreezer {\\n function isFrozen(address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x12508a9d528d1b63dc06644e9d97e864acc94f8a763cf8555e90bcdf1b2f8b21\"},\"project:/contracts/common/interfaces/IRegistry.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IRegistry {\\n function setAddressFor(string calldata, address) external;\\n function getAddressForOrDie(bytes32) external view returns (address);\\n function getAddressFor(bytes32) external view returns (address);\\n function getAddressForStringOrDie(string calldata identifier) external view returns (address);\\n function getAddressForString(string calldata identifier) external view returns (address);\\n function isOneOf(bytes32[] calldata, address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x78ba82722d28e815c117f33d4659404f0707dab1c9b51f1bce5d4c15d6c94537\"},\"project:/contracts/governance/interfaces/IElection.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IElection {\\n function electValidatorSigners() external view returns (address[] memory);\\n function electNValidatorSigners(uint256, uint256) external view returns (address[] memory);\\n function vote(address, uint256, address, address) external returns (bool);\\n function activate(address) external returns (bool);\\n function revokeActive(address, uint256, address, address, uint256) external returns (bool);\\n function revokeAllActive(address, address, address, uint256) external returns (bool);\\n function revokePending(address, uint256, address, address, uint256) external returns (bool);\\n function markGroupIneligible(address) external;\\n function markGroupEligible(address, address, address) external;\\n function forceDecrementVotes(\\n address,\\n uint256,\\n address[] calldata,\\n address[] calldata,\\n uint256[] calldata\\n ) external returns (uint256);\\n\\n // view functions\\n function getElectableValidators() external view returns (uint256, uint256);\\n function getElectabilityThreshold() external view returns (uint256);\\n function getNumVotesReceivable(address) external view returns (uint256);\\n function getTotalVotes() external view returns (uint256);\\n function getActiveVotes() external view returns (uint256);\\n function getTotalVotesByAccount(address) external view returns (uint256);\\n function getPendingVotesForGroupByAccount(address, address) external view returns (uint256);\\n function getActiveVotesForGroupByAccount(address, address) external view returns (uint256);\\n function getTotalVotesForGroupByAccount(address, address) external view returns (uint256);\\n function getActiveVoteUnitsForGroupByAccount(address, address) external view returns (uint256);\\n function getTotalVotesForGroup(address) external view returns (uint256);\\n function getActiveVotesForGroup(address) external view returns (uint256);\\n function getPendingVotesForGroup(address) external view returns (uint256);\\n function getGroupEligibility(address) external view returns (bool);\\n function getGroupEpochRewards(address, uint256, uint256[] calldata)\\n external\\n view\\n returns (uint256);\\n function getGroupsVotedForByAccount(address) external view returns (address[] memory);\\n function getEligibleValidatorGroups() external view returns (address[] memory);\\n function getTotalVotesForEligibleValidatorGroups()\\n external\\n view\\n returns (address[] memory, uint256[] memory);\\n function getCurrentValidatorSigners() external view returns (address[] memory);\\n function canReceiveVotes(address, uint256) external view returns (bool);\\n function hasActivatablePendingVotes(address, address) external view returns (bool);\\n\\n // only owner\\n function setElectableValidators(uint256, uint256) external returns (bool);\\n function setMaxNumGroupsVotedFor(uint256) external returns (bool);\\n function setElectabilityThreshold(uint256) external returns (bool);\\n\\n // only VM\\n function distributeEpochRewards(address, uint256, address, address) external;\\n}\\n\",\"keccak256\":\"0xebcd0d7dbbb2df503967ad63c9ddd437cef89a94ba2cc2f9ce274f41a4c901ee\"},\"project:/contracts/governance/interfaces/IGovernance.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IGovernance {\\n function isVoting(address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x227bf6a6b56411c368c9752761e2202ad71f2199deb2b114b125712b63372b7e\"},\"project:/contracts/governance/interfaces/ILockedGold.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface ILockedGold {\\n function incrementNonvotingAccountBalance(address, uint256) external;\\n function decrementNonvotingAccountBalance(address, uint256) external;\\n function getAccountTotalLockedGold(address) external view returns (uint256);\\n function getTotalLockedGold() external view returns (uint256);\\n function getPendingWithdrawals(address)\\n external\\n view\\n returns (uint256[] memory, uint256[] memory);\\n function getTotalPendingWithdrawals(address) external view returns (uint256);\\n function lock() external payable;\\n function unlock(uint256) external;\\n function relock(uint256, uint256) external;\\n function withdraw(uint256) external;\\n function slash(\\n address account,\\n uint256 penalty,\\n address reporter,\\n uint256 reward,\\n address[] calldata lessers,\\n address[] calldata greaters,\\n uint256[] calldata indices\\n ) external;\\n function isSlasher(address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x577d01d8a1fbf47980fb5ffd36de2084ec255889b15671adfecd3a285df4f253\"},\"project:/contracts/governance/interfaces/IValidators.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IValidators {\\n function registerValidator(bytes calldata, bytes calldata, bytes calldata)\\n external\\n returns (bool);\\n function deregisterValidator(uint256) external returns (bool);\\n function affiliate(address) external returns (bool);\\n function deaffiliate() external returns (bool);\\n function updateBlsPublicKey(bytes calldata, bytes calldata) external returns (bool);\\n function registerValidatorGroup(uint256) external returns (bool);\\n function deregisterValidatorGroup(uint256) external returns (bool);\\n function addMember(address) external returns (bool);\\n function addFirstMember(address, address, address) external returns (bool);\\n function removeMember(address) external returns (bool);\\n function reorderMember(address, address, address) external returns (bool);\\n function updateCommission() external;\\n function setNextCommissionUpdate(uint256) external;\\n function resetSlashingMultiplier() external;\\n\\n // only owner\\n function setCommissionUpdateDelay(uint256) external;\\n function setMaxGroupSize(uint256) external returns (bool);\\n function setMembershipHistoryLength(uint256) external returns (bool);\\n function setValidatorScoreParameters(uint256, uint256) external returns (bool);\\n function setGroupLockedGoldRequirements(uint256, uint256) external returns (bool);\\n function setValidatorLockedGoldRequirements(uint256, uint256) external returns (bool);\\n function setSlashingMultiplierResetPeriod(uint256) external;\\n\\n // view functions\\n function getMaxGroupSize() external view returns (uint256);\\n function getCommissionUpdateDelay() external view returns (uint256);\\n function getValidatorScoreParameters() external view returns (uint256, uint256);\\n function getMembershipHistory(address)\\n external\\n view\\n returns (uint256[] memory, address[] memory, uint256, uint256);\\n function calculateEpochScore(uint256) external view returns (uint256);\\n function calculateGroupEpochScore(uint256[] calldata) external view returns (uint256);\\n function getAccountLockedGoldRequirement(address) external view returns (uint256);\\n function meetsAccountLockedGoldRequirements(address) external view returns (bool);\\n function getValidatorBlsPublicKeyFromSigner(address) external view returns (bytes memory);\\n function getValidator(address account)\\n external\\n view\\n returns (bytes memory, bytes memory, address, uint256, address);\\n function getValidatorGroup(address)\\n external\\n view\\n returns (address[] memory, uint256, uint256, uint256, uint256[] memory, uint256, uint256);\\n function getGroupNumMembers(address) external view returns (uint256);\\n function getTopGroupValidators(address, uint256) external view returns (address[] memory);\\n function getGroupsNumMembers(address[] calldata accounts)\\n external\\n view\\n returns (uint256[] memory);\\n function getNumRegisteredValidators() external view returns (uint256);\\n function groupMembershipInEpoch(address, uint256, uint256) external view returns (address);\\n\\n // only registered contract\\n function updateEcdsaPublicKey(address, address, bytes calldata) external returns (bool);\\n function updatePublicKeys(address, address, bytes calldata, bytes calldata, bytes calldata)\\n external\\n returns (bool);\\n function getValidatorLockedGoldRequirements() external view returns (uint256, uint256);\\n function getGroupLockedGoldRequirements() external view returns (uint256, uint256);\\n function getRegisteredValidators() external view returns (address[] memory);\\n function getRegisteredValidatorSigners() external view returns (address[] memory);\\n function getRegisteredValidatorGroups() external view returns (address[] memory);\\n function isValidatorGroup(address) external view returns (bool);\\n function isValidator(address) external view returns (bool);\\n function getValidatorGroupSlashingMultiplier(address) external view returns (uint256);\\n function getMembershipInLastEpoch(address) external view returns (address);\\n function getMembershipInLastEpochFromSigner(address) external view returns (address);\\n\\n // only VM\\n function updateValidatorScoreFromSigner(address, uint256) external;\\n function distributeEpochPaymentsFromSigner(address, uint256) external returns (uint256);\\n\\n // only slasher\\n function forceDeaffiliateIfValidator(address) external;\\n function halveSlashingMultiplier(address) external;\\n\\n}\\n\",\"keccak256\":\"0x524a9e48689537421f97296ffd57fa0f2887117f9af9e71dd5ed17e66ba92d2a\"},\"project:/contracts/identity/FederatedAttestations.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"openzeppelin-solidity/contracts/math/SafeMath.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/ownership/Ownable.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/utils/SafeCast.sol\\\";\\n\\nimport \\\"./interfaces/IFederatedAttestations.sol\\\";\\nimport \\\"../common/interfaces/IAccounts.sol\\\";\\nimport \\\"../common/interfaces/ICeloVersionedContract.sol\\\";\\n\\nimport \\\"../common/Initializable.sol\\\";\\nimport \\\"../common/UsingRegistryV2.sol\\\";\\nimport \\\"../common/Signatures.sol\\\";\\n\\n/**\\n * @title Contract mapping identifiers to accounts\\n */\\ncontract FederatedAttestations is\\n IFederatedAttestations,\\n ICeloVersionedContract,\\n Ownable,\\n Initializable,\\n UsingRegistryV2\\n{\\n using SafeMath for uint256;\\n using SafeCast for uint256;\\n\\n struct OwnershipAttestation {\\n address account;\\n address signer;\\n uint64 issuedOn;\\n uint64 publishedOn;\\n // using uint64 to allow for extra space to add parameters\\n }\\n\\n // Mappings from identifier <-> attestation are separated by issuer,\\n // *requiring* users to specify issuers when retrieving attestations.\\n // Maintaining bidirectional mappings (vs. in Attestations.sol) makes it possible\\n // to perform lookups by identifier or account without indexing event data.\\n\\n // identifier -> issuer -> attestations\\n mapping(bytes32 => mapping(address => OwnershipAttestation[])) public identifierToAttestations;\\n // account -> issuer -> identifiers\\n mapping(address => mapping(address => bytes32[])) public addressToIdentifiers;\\n\\n // unique attestation hash -> isRevoked\\n mapping(bytes32 => bool) public revokedAttestations;\\n\\n bytes32 public eip712DomainSeparator;\\n bytes32 public constant EIP712_OWNERSHIP_ATTESTATION_TYPEHASH = keccak256(\\n abi.encodePacked(\\n \\\"OwnershipAttestation(bytes32 identifier,address issuer,\\\",\\n \\\"address account,address signer,uint64 issuedOn)\\\"\\n )\\n );\\n\\n // Changing any of these constraints will require re-benchmarking\\n // and checking assumptions for batch revocation.\\n // These can only be modified by releasing a new version of this contract.\\n uint256 public constant MAX_ATTESTATIONS_PER_IDENTIFIER = 20;\\n uint256 public constant MAX_IDENTIFIERS_PER_ADDRESS = 20;\\n\\n event EIP712DomainSeparatorSet(bytes32 eip712DomainSeparator);\\n event AttestationRegistered(\\n bytes32 indexed identifier,\\n address indexed issuer,\\n address indexed account,\\n address signer,\\n uint64 issuedOn,\\n uint64 publishedOn\\n );\\n event AttestationRevoked(\\n bytes32 indexed identifier,\\n address indexed issuer,\\n address indexed account,\\n address signer,\\n uint64 issuedOn,\\n uint64 publishedOn\\n );\\n\\n /**\\n * @notice Sets initialized == true on implementation contracts\\n * @param test Set to true to skip implementation initialization\\n */\\n constructor(bool test) public Initializable(test) {}\\n\\n /**\\n * @notice Returns the storage, major, minor, and patch version of the contract.\\n * @return The storage, major, minor, and patch version of the contract.\\n */\\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) {\\n return (1, 1, 0, 0);\\n }\\n\\n /**\\n * @notice Used in place of the constructor to allow the contract to be upgradable via proxy.\\n */\\n function initialize() external initializer {\\n _transferOwnership(msg.sender);\\n setEip712DomainSeparator();\\n }\\n\\n /**\\n * @notice Registers an attestation directly from the issuer\\n * @param identifier Hash of the identifier to be attested\\n * @param account Address of the account being mapped to the identifier\\n * @param issuedOn Time at which the issuer issued the attestation in Unix time \\n * @dev Attestation signer and issuer in storage is set to msg.sender\\n * @dev Throws if an attestation with the same (identifier, issuer, account) already exists\\n */\\n function registerAttestationAsIssuer(bytes32 identifier, address account, uint64 issuedOn)\\n external\\n {\\n _registerAttestation(identifier, msg.sender, account, msg.sender, issuedOn);\\n }\\n\\n /**\\n * @notice Registers an attestation with a valid signature\\n * @param identifier Hash of the identifier to be attested\\n * @param issuer Address of the attestation issuer\\n * @param account Address of the account being mapped to the identifier\\n * @param issuedOn Time at which the issuer issued the attestation in Unix time \\n * @param signer Address of the signer of the attestation\\n * @param v The recovery id of the incoming ECDSA signature\\n * @param r Output value r of the ECDSA signature\\n * @param s Output value s of the ECDSA signature\\n * @dev Throws if an attestation with the same (identifier, issuer, account) already exists\\n */\\n function registerAttestation(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external {\\n validateAttestationSig(identifier, issuer, account, signer, issuedOn, v, r, s);\\n _registerAttestation(identifier, issuer, account, signer, issuedOn);\\n }\\n\\n /**\\n * @notice Revokes an attestation \\n * @param identifier Hash of the identifier to be revoked\\n * @param issuer Address of the attestation issuer\\n * @param account Address of the account mapped to the identifier\\n * @dev Throws if sender is not the issuer, signer, or account\\n */\\n function revokeAttestation(bytes32 identifier, address issuer, address account) external {\\n require(\\n account == msg.sender ||\\n // Minor gas optimization to prevent storage lookup in Accounts.sol if issuer == msg.sender\\n issuer == msg.sender ||\\n getAccounts().attestationSignerToAccount(msg.sender) == issuer,\\n \\\"Sender does not have permission to revoke this attestation\\\"\\n );\\n _revokeAttestation(identifier, issuer, account);\\n }\\n\\n /**\\n * @notice Revokes attestations [identifiers <-> accounts] from issuer\\n * @param issuer Address of the issuer of all attestations to be revoked\\n * @param identifiers Hash of the identifiers\\n * @param accounts Addresses of the accounts mapped to the identifiers\\n * at the same indices\\n * @dev Throws if the number of identifiers and accounts is not the same\\n * @dev Throws if sender is not the issuer or currently registered signer of issuer\\n * @dev Throws if an attestation is not found for identifiers[i] <-> accounts[i]\\n */\\n function batchRevokeAttestations(\\n address issuer,\\n bytes32[] calldata identifiers,\\n address[] calldata accounts\\n ) external {\\n require(identifiers.length == accounts.length, \\\"Unequal number of identifiers and accounts\\\");\\n require(\\n issuer == msg.sender || getAccounts().attestationSignerToAccount(msg.sender) == issuer,\\n \\\"Sender does not have permission to revoke attestations from this issuer\\\"\\n );\\n\\n for (uint256 i = 0; i < identifiers.length; i = i.add(1)) {\\n _revokeAttestation(identifiers[i], issuer, accounts[i]);\\n }\\n }\\n\\n /**\\n * @notice Returns info about attestations for `identifier` produced by \\n * signers of `trustedIssuers`\\n * @param identifier Hash of the identifier\\n * @param trustedIssuers Array of n issuers whose attestations will be included\\n * @return countsPerIssuer Array of number of attestations returned per issuer\\n * For m (== sum([0])) found attestations: \\n * @return accounts Array of m accounts \\n * @return signers Array of m signers\\n * @return issuedOns Array of m issuedOns\\n * @return publishedOns Array of m publishedOns\\n * @dev Adds attestation info to the arrays in order of provided trustedIssuers\\n * @dev Expectation that only one attestation exists per (identifier, issuer, account)\\n */\\n function lookupAttestations(bytes32 identifier, address[] calldata trustedIssuers)\\n external\\n view\\n returns (\\n uint256[] memory countsPerIssuer,\\n address[] memory accounts,\\n address[] memory signers,\\n uint64[] memory issuedOns,\\n uint64[] memory publishedOns\\n )\\n {\\n uint256 totalAttestations;\\n (totalAttestations, countsPerIssuer) = getNumAttestations(identifier, trustedIssuers);\\n\\n accounts = new address[](totalAttestations);\\n signers = new address[](totalAttestations);\\n issuedOns = new uint64[](totalAttestations);\\n publishedOns = new uint64[](totalAttestations);\\n\\n totalAttestations = 0;\\n OwnershipAttestation[] memory attestationsPerIssuer;\\n\\n for (uint256 i = 0; i < trustedIssuers.length; i = i.add(1)) {\\n attestationsPerIssuer = identifierToAttestations[identifier][trustedIssuers[i]];\\n for (uint256 j = 0; j < attestationsPerIssuer.length; j = j.add(1)) {\\n accounts[totalAttestations] = attestationsPerIssuer[j].account;\\n signers[totalAttestations] = attestationsPerIssuer[j].signer;\\n issuedOns[totalAttestations] = attestationsPerIssuer[j].issuedOn;\\n publishedOns[totalAttestations] = attestationsPerIssuer[j].publishedOn;\\n totalAttestations = totalAttestations.add(1);\\n }\\n }\\n return (countsPerIssuer, accounts, signers, issuedOns, publishedOns);\\n }\\n\\n /**\\n * @notice Returns identifiers mapped to `account` by signers of `trustedIssuers`\\n * @param account Address of the account\\n * @param trustedIssuers Array of n issuers whose identifier mappings will be used\\n * @return countsPerIssuer Array of number of identifiers returned per issuer\\n * @return identifiers Array (length == sum([0])) of identifiers\\n * @dev Adds identifier info to the arrays in order of provided trustedIssuers\\n * @dev Expectation that only one attestation exists per (identifier, issuer, account)\\n */\\n function lookupIdentifiers(address account, address[] calldata trustedIssuers)\\n external\\n view\\n returns (uint256[] memory countsPerIssuer, bytes32[] memory identifiers)\\n {\\n uint256 totalIdentifiers;\\n (totalIdentifiers, countsPerIssuer) = getNumIdentifiers(account, trustedIssuers);\\n\\n identifiers = new bytes32[](totalIdentifiers);\\n bytes32[] memory identifiersPerIssuer;\\n\\n uint256 currIndex = 0;\\n\\n for (uint256 i = 0; i < trustedIssuers.length; i = i.add(1)) {\\n identifiersPerIssuer = addressToIdentifiers[account][trustedIssuers[i]];\\n for (uint256 j = 0; j < identifiersPerIssuer.length; j = j.add(1)) {\\n identifiers[currIndex] = identifiersPerIssuer[j];\\n currIndex = currIndex.add(1);\\n }\\n }\\n return (countsPerIssuer, identifiers);\\n }\\n\\n /**\\n * @notice Validates the given attestation and signature\\n * @param identifier Hash of the identifier to be attested\\n * @param issuer Address of the attestation issuer\\n * @param account Address of the account being mapped to the identifier\\n * @param issuedOn Time at which the issuer issued the attestation in Unix time \\n * @param signer Address of the signer of the attestation\\n * @param v The recovery id of the incoming ECDSA signature\\n * @param r Output value r of the ECDSA signature\\n * @param s Output value s of the ECDSA signature\\n * @dev Throws if attestation has been revoked\\n * @dev Throws if signer is not an authorized AttestationSigner of the issuer\\n */\\n function validateAttestationSig(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) public view {\\n // attestationSignerToAccount instead of isSigner allows the issuer to act as its own signer\\n require(\\n getAccounts().attestationSignerToAccount(signer) == issuer,\\n \\\"Signer is not a currently authorized AttestationSigner for the issuer\\\"\\n );\\n bytes32 structHash = getUniqueAttestationHash(identifier, issuer, account, signer, issuedOn);\\n address guessedSigner = Signatures.getSignerOfTypedDataHash(\\n eip712DomainSeparator,\\n structHash,\\n v,\\n r,\\n s\\n );\\n require(guessedSigner == signer, \\\"Signature is invalid\\\");\\n }\\n\\n function getUniqueAttestationHash(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn\\n ) public pure returns (bytes32) {\\n return\\n keccak256(\\n abi.encode(\\n EIP712_OWNERSHIP_ATTESTATION_TYPEHASH,\\n identifier,\\n issuer,\\n account,\\n signer,\\n issuedOn\\n )\\n );\\n }\\n\\n /**\\n * @notice Sets the EIP712 domain separator for the Celo FederatedAttestations abstraction.\\n */\\n function setEip712DomainSeparator() internal {\\n uint256 chainId;\\n assembly {\\n chainId := chainid\\n }\\n\\n eip712DomainSeparator = keccak256(\\n abi.encode(\\n keccak256(\\n \\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"\\n ),\\n keccak256(bytes(\\\"FederatedAttestations\\\")),\\n keccak256(\\\"1.0\\\"),\\n chainId,\\n address(this)\\n )\\n );\\n emit EIP712DomainSeparatorSet(eip712DomainSeparator);\\n }\\n\\n /**\\n * @notice Helper function for lookupAttestations to calculate the\\n total number of attestations completed for an identifier\\n by each trusted issuer\\n * @param identifier Hash of the identifier\\n * @param trustedIssuers Array of n issuers whose attestations will be included\\n * @return totalAttestations Sum total of attestations found\\n * @return countsPerIssuer Array of number of attestations found per issuer\\n */\\n function getNumAttestations(bytes32 identifier, address[] memory trustedIssuers)\\n internal\\n view\\n returns (uint256 totalAttestations, uint256[] memory countsPerIssuer)\\n {\\n totalAttestations = 0;\\n uint256 numAttestationsForIssuer;\\n countsPerIssuer = new uint256[](trustedIssuers.length);\\n\\n for (uint256 i = 0; i < trustedIssuers.length; i = i.add(1)) {\\n numAttestationsForIssuer = identifierToAttestations[identifier][trustedIssuers[i]].length;\\n totalAttestations = totalAttestations.add(numAttestationsForIssuer);\\n countsPerIssuer[i] = numAttestationsForIssuer;\\n }\\n return (totalAttestations, countsPerIssuer);\\n }\\n\\n /**\\n * @notice Helper function for lookupIdentifiers to calculate the\\n total number of identifiers completed for an identifier\\n by each trusted issuer\\n * @param account Address of the account\\n * @param trustedIssuers Array of n issuers whose identifiers will be included\\n * @return totalIdentifiers Sum total of identifiers found\\n * @return countsPerIssuer Array of number of identifiers found per issuer\\n */\\n function getNumIdentifiers(address account, address[] memory trustedIssuers)\\n internal\\n view\\n returns (uint256 totalIdentifiers, uint256[] memory countsPerIssuer)\\n {\\n totalIdentifiers = 0;\\n uint256 numIdentifiersForIssuer;\\n countsPerIssuer = new uint256[](trustedIssuers.length);\\n\\n for (uint256 i = 0; i < trustedIssuers.length; i = i.add(1)) {\\n numIdentifiersForIssuer = addressToIdentifiers[account][trustedIssuers[i]].length;\\n totalIdentifiers = totalIdentifiers.add(numIdentifiersForIssuer);\\n countsPerIssuer[i] = numIdentifiersForIssuer;\\n }\\n return (totalIdentifiers, countsPerIssuer);\\n }\\n\\n /**\\n * @notice Registers an attestation\\n * @param identifier Hash of the identifier to be attested\\n * @param issuer Address of the attestation issuer\\n * @param account Address of the account being mapped to the identifier\\n * @param issuedOn Time at which the issuer issued the attestation in Unix time \\n * @param signer Address of the signer of the attestation\\n */\\n function _registerAttestation(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn\\n ) private {\\n require(\\n !revokedAttestations[getUniqueAttestationHash(identifier, issuer, account, signer, issuedOn)],\\n \\\"Attestation has been revoked\\\"\\n );\\n uint256 numExistingAttestations = identifierToAttestations[identifier][issuer].length;\\n require(\\n numExistingAttestations.add(1) <= MAX_ATTESTATIONS_PER_IDENTIFIER,\\n \\\"Max attestations already registered for identifier\\\"\\n );\\n require(\\n addressToIdentifiers[account][issuer].length.add(1) <= MAX_IDENTIFIERS_PER_ADDRESS,\\n \\\"Max identifiers already registered for account\\\"\\n );\\n\\n for (uint256 i = 0; i < numExistingAttestations; i = i.add(1)) {\\n // This enforces only one attestation to be uploaded\\n // for a given set of (identifier, issuer, account)\\n // Editing/upgrading an attestation requires that it be revoked before a new one is registered\\n require(\\n identifierToAttestations[identifier][issuer][i].account != account,\\n \\\"Attestation for this account already exists\\\"\\n );\\n }\\n uint64 publishedOn = uint64(block.timestamp);\\n OwnershipAttestation memory attestation = OwnershipAttestation(\\n account,\\n signer,\\n issuedOn,\\n publishedOn\\n );\\n identifierToAttestations[identifier][issuer].push(attestation);\\n addressToIdentifiers[account][issuer].push(identifier);\\n emit AttestationRegistered(identifier, issuer, account, signer, issuedOn, publishedOn);\\n }\\n\\n /**\\n * @notice Revokes an attestation:\\n * helper function for revokeAttestation and batchRevokeAttestations\\n * @param identifier Hash of the identifier to be revoked\\n * @param issuer Address of the attestation issuer\\n * @param account Address of the account mapped to the identifier\\n * @dev Reverts if attestation is not found mapping identifier <-> account\\n */\\n function _revokeAttestation(bytes32 identifier, address issuer, address account) private {\\n OwnershipAttestation[] storage attestations = identifierToAttestations[identifier][issuer];\\n uint256 lenAttestations = attestations.length;\\n for (uint256 i = 0; i < lenAttestations; i = i.add(1)) {\\n if (attestations[i].account != account) {\\n continue;\\n }\\n\\n OwnershipAttestation memory attestation = attestations[i];\\n // This is meant to delete the attestations in the array\\n // and then move the last element in the array to that empty spot,\\n // to avoid having empty elements in the array\\n if (i != lenAttestations - 1) {\\n attestations[i] = attestations[lenAttestations - 1];\\n }\\n attestations.pop();\\n\\n bool deletedIdentifier = false;\\n bytes32[] storage identifiers = addressToIdentifiers[account][issuer];\\n uint256 lenIdentifiers = identifiers.length;\\n\\n for (uint256 j = 0; j < lenIdentifiers; j = j.add(1)) {\\n if (identifiers[j] != identifier) {\\n continue;\\n }\\n if (j != lenIdentifiers - 1) {\\n identifiers[j] = identifiers[lenIdentifiers - 1];\\n }\\n identifiers.pop();\\n deletedIdentifier = true;\\n break;\\n }\\n // Should never be false - both mappings should always be updated in unison\\n assert(deletedIdentifier);\\n\\n bytes32 attestationHash = getUniqueAttestationHash(\\n identifier,\\n issuer,\\n account,\\n attestation.signer,\\n attestation.issuedOn\\n );\\n revokedAttestations[attestationHash] = true;\\n\\n emit AttestationRevoked(\\n identifier,\\n issuer,\\n account,\\n attestation.signer,\\n attestation.issuedOn,\\n attestation.publishedOn\\n );\\n return;\\n }\\n revert(\\\"Attestation to be revoked does not exist\\\");\\n }\\n}\\n\",\"keccak256\":\"0xcc1fc6bd31c63ef84e41e5f7b78fbeb13c5c65aa1dd3cce2ce4db998e86e7ddc\"},\"project:/contracts/identity/interfaces/IAttestations.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IAttestations {\\n function request(bytes32, uint256, address) external;\\n function selectIssuers(bytes32) external;\\n function complete(bytes32, uint8, bytes32, bytes32) external;\\n function revoke(bytes32, uint256) external;\\n function withdraw(address) external;\\n function approveTransfer(bytes32, uint256, address, address, bool) external;\\n\\n // view functions\\n function getUnselectedRequest(bytes32, address) external view returns (uint32, uint32, address);\\n function getAttestationIssuers(bytes32, address) external view returns (address[] memory);\\n function getAttestationStats(bytes32, address) external view returns (uint32, uint32);\\n function batchGetAttestationStats(bytes32[] calldata)\\n external\\n view\\n returns (uint256[] memory, address[] memory, uint64[] memory, uint64[] memory);\\n function getAttestationState(bytes32, address, address)\\n external\\n view\\n returns (uint8, uint32, address);\\n function getCompletableAttestations(bytes32, address)\\n external\\n view\\n returns (uint32[] memory, address[] memory, uint256[] memory, bytes memory);\\n function getAttestationRequestFee(address) external view returns (uint256);\\n function getMaxAttestations() external view returns (uint256);\\n function validateAttestationCode(bytes32, address, uint8, bytes32, bytes32)\\n external\\n view\\n returns (address);\\n function lookupAccountsForIdentifier(bytes32) external view returns (address[] memory);\\n function requireNAttestationsRequested(bytes32, address, uint32) external view;\\n\\n // only owner\\n function setAttestationRequestFee(address, uint256) external;\\n function setAttestationExpiryBlocks(uint256) external;\\n function setSelectIssuersWaitBlocks(uint256) external;\\n function setMaxAttestations(uint256) external;\\n}\\n\",\"keccak256\":\"0x979aaac636fe6a64f97034bf0bf062b5f0efd6e6f9f3fe84e81180f82eeb7a3e\"},\"project:/contracts/identity/interfaces/IFederatedAttestations.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IFederatedAttestations {\\n function registerAttestationAsIssuer(bytes32 identifier, address account, uint64 issuedOn)\\n external;\\n function registerAttestation(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n function revokeAttestation(bytes32 identifier, address issuer, address account) external;\\n function batchRevokeAttestations(\\n address issuer,\\n bytes32[] calldata identifiers,\\n address[] calldata accounts\\n ) external;\\n\\n // view functions\\n function lookupAttestations(bytes32 identifier, address[] calldata trustedIssuers)\\n external\\n view\\n returns (\\n uint256[] memory,\\n address[] memory,\\n address[] memory,\\n uint64[] memory,\\n uint64[] memory\\n );\\n function lookupIdentifiers(address account, address[] calldata trustedIssuers)\\n external\\n view\\n returns (uint256[] memory, bytes32[] memory);\\n function validateAttestationSig(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external view;\\n function getUniqueAttestationHash(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn\\n ) external pure returns (bytes32);\\n}\\n\",\"keccak256\":\"0xe6b1bfcc36ca38554c29c03f96e70f937a824462fb620e418f774c3d1340d9a8\"},\"project:/contracts/identity/interfaces/IRandom.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IRandom {\\n function revealAndCommit(bytes32, bytes32, address) external;\\n function randomnessBlockRetentionWindow() external view returns (uint256);\\n function random() external view returns (bytes32);\\n function getBlockRandomness(uint256) external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd65fd529d133cbde94628b39b0d2f0f4b6d0af2e8f97c0e6b4b2cd476479ed1d\"},\"project:/contracts/stability/interfaces/IExchange.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IExchange {\\n function buy(uint256, uint256, bool) external returns (uint256);\\n function sell(uint256, uint256, bool) external returns (uint256);\\n function exchange(uint256, uint256, bool) external returns (uint256);\\n function setUpdateFrequency(uint256) external;\\n function getBuyTokenAmount(uint256, bool) external view returns (uint256);\\n function getSellTokenAmount(uint256, bool) external view returns (uint256);\\n function getBuyAndSellBuckets(bool) external view returns (uint256, uint256);\\n}\\n\",\"keccak256\":\"0xf2934d473f1b42566dbd90b4777725c966524bab78ce734b51f2510c6ef83ebb\"},\"project:/contracts/stability/interfaces/IReserve.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IReserve {\\n function setTobinTaxStalenessThreshold(uint256) external;\\n function addToken(address) external returns (bool);\\n function removeToken(address, uint256) external returns (bool);\\n function transferGold(address payable, uint256) external returns (bool);\\n function transferExchangeGold(address payable, uint256) external returns (bool);\\n function getReserveGoldBalance() external view returns (uint256);\\n function getUnfrozenReserveGoldBalance() external view returns (uint256);\\n function getOrComputeTobinTax() external returns (uint256, uint256);\\n function getTokens() external view returns (address[] memory);\\n function getReserveRatio() external view returns (uint256);\\n function addExchangeSpender(address) external;\\n function removeExchangeSpender(address, uint256) external;\\n function addSpender(address) external;\\n function removeSpender(address) external;\\n}\\n\",\"keccak256\":\"0x8da4d702b47a7e60981ca416f2d0f24a3c1dea9ab44f04b695c0fde02c84a38e\"},\"project:/contracts/stability/interfaces/ISortedOracles.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface ISortedOracles {\\n function addOracle(address, address) external;\\n function removeOracle(address, address, uint256) external;\\n function report(address, uint256, address, address) external;\\n function removeExpiredReports(address, uint256) external;\\n function isOldestReportExpired(address token) external view returns (bool, address);\\n function numRates(address) external view returns (uint256);\\n function medianRate(address) external view returns (uint256, uint256);\\n function numTimestamps(address) external view returns (uint256);\\n function medianTimestamp(address) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x8f80e430800fff2f04f3981c4b73a2a374b2c2150543a2de51fcf7ba4fb08789\"},\"project:/contracts/stability/interfaces/IStableToken.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\n/**\\n * @title This interface describes the functions specific to Celo Stable Tokens, and in the\\n * absence of interface inheritance is intended as a companion to IERC20.sol and ICeloToken.sol.\\n */\\ninterface IStableToken {\\n function mint(address, uint256) external returns (bool);\\n function burn(uint256) external returns (bool);\\n function setInflationParameters(uint256, uint256) external;\\n function valueToUnits(uint256) external view returns (uint256);\\n function unitsToValue(uint256) external view returns (uint256);\\n function getInflationParameters() external view returns (uint256, uint256, uint256, uint256);\\n\\n // NOTE: duplicated with IERC20.sol, remove once interface inheritance is supported.\\n function balanceOf(address) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x091e577acecdf050fe4c41133b11fe330d07050c5fe78b65bfce32ccc29e51c6\"}},\"version\":1}",
+ "bytecode": "0x60806040523480156200001157600080fd5b506040516200389e3803806200389e833981810160405260208110156200003757600080fd5b81019080805190602001909291905050508060006200005b6200012360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350806200011b576001600060146101000a81548160ff0219169083151502179055505b50506200012b565b600033905090565b613763806200013b6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80638129fc1c116100c3578063b4b773421161007c578063b4b7734214610889578063b71aae46146108a7578063cba33ce01461096b578063e27ff311146109ed578063e3a1b7c614610adb578063f2fde38b14610bdc5761014d565b80638129fc1c146105395780638da5cb5b146105435780638f32d59b1461058d57806394b09057146105af5780639b43e48014610673578063a862e12e146106915761014d565b80635b07fdd8116101155780635b07fdd8146103155780635fa2fc30146103335780636125a6c214610379578063715018a6146104af57806373dfde98146104b95780637e68298d1461051b5761014d565b80630ab3ddc6146101525780631100b32414610208578063158ef93e1461027657806328c1f99b1461029857806354255be0146102e2575b600080fd5b6101f2600480360360a081101561016857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190505050610c20565b6040518082815260200191505060405180910390f35b6102746004803603606081101561021e57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d48565b005b61027e610f06565b604051808215151515815260200191505060405180910390f35b6102a0610f19565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ea610f1f565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b61031d610f45565b6040518082815260200191505060405180910390f35b61035f6004803603602081101561034957600080fd5b8101908080359060200190929190505050610f4b565b604051808215151515815260200191505060405180910390f35b6104106004803603604081101561038f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156103cc57600080fd5b8201836020820111156103de57600080fd5b8035906020019184602083028401116401000000008311171561040057600080fd5b9091929391929390505050610f6b565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561045757808201518184015260208101905061043c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561049957808201518184015260208101905061047e565b5050505090500194505050505060405180910390f35b6104b761119c565b005b610519600480360360608110156104cf57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff1690602001909291905050506112d5565b005b6105236112e7565b6040518082815260200191505060405180910390f35b61054161131f565b005b61054b6113d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105956113f9565b604051808215151515815260200191505060405180910390f35b61067160048036036101008110156105c657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050611457565b005b61067b61170d565b6040518082815260200191505060405180910390f35b610712600480360360408110156106a757600080fd5b8101908080359060200190929190803590602001906401000000008111156106ce57600080fd5b8201836020820111156106e057600080fd5b8035906020019184602083028401116401000000008311171561070257600080fd5b9091929391929390505050611712565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019060200280838360005b8381101561076557808201518184015260208101905061074a565b5050505090500186810385528a818151815260200191508051906020019060200280838360005b838110156107a757808201518184015260208101905061078c565b50505050905001868103845289818151815260200191508051906020019060200280838360005b838110156107e95780820151818401526020810190506107ce565b50505050905001868103835288818151815260200191508051906020019060200280838360005b8381101561082b578082015181840152602081019050610810565b50505050905001868103825287818151815260200191508051906020019060200280838360005b8381101561086d578082015181840152602081019050610852565b505050509050019a505050505050505050505060405180910390f35b610891611bef565b6040518082815260200191505060405180910390f35b61096960048036036101008110156108be57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050611bf4565b005b6109d76004803603606081101561098157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c1b565b6040518082815260200191505060405180910390f35b610ad960048036036060811015610a0357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610a4057600080fd5b820183602082011115610a5257600080fd5b80359060200191846020830284011164010000000083111715610a7457600080fd5b909192939192939080359060200190640100000000811115610a9557600080fd5b820183602082011115610aa757600080fd5b80359060200191846020830284011164010000000083111715610ac957600080fd5b9091929391929390505050611c56565b005b610b3160048036036060811015610af157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ea5565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff16815260200194505050505060405180910390f35b610c1e60048036036020811015610bf257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f64565b005b600060405160200180806136be6037913960370180613572602f9139602f019050604051602081830303815290604052805190602001208686868686604051602001808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001965050505050505060405160208183030381529060405280519060200120905095945050505050565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610dad57503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80610ea157508173ffffffffffffffffffffffffffffffffffffffff16610dd2611fea565b73ffffffffffffffffffffffffffffffffffffffff16637b2434cb336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e4e57600080fd5b505afa158015610e62573d6000803e3d6000fd5b505050506040513d6020811015610e7857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16145b610ef6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806136f5603a913960400191505060405180910390fd5b610f018383836120c5565b505050565b600060149054906101000a900460ff1681565b61ce1081565b600080600080600180600080839350829250819150809050935093509350935090919293565b60045481565b60036020528060005260406000206000915054906101000a900460ff1681565b6060806000610fbb86868680806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050612807565b809450819250505080604051908082528060200260200182016040528015610ff25781602001602082028038833980820191505090505b5091506060600080905060008090505b8787905081101561118a57600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089898481811061105a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156110fb57602002820191906000526020600020905b8154815260200190600101908083116110e7575b5050505050925060008090505b835181101561116e5783818151811061111d57fe5b602002602001015186848151811061113157fe5b60200260200101818152505061115160018461294090919063ffffffff16565b925061116760018261294090919063ffffffff16565b9050611108565b5061118360018261294090919063ffffffff16565b9050611002565b50848494509450505050935093915050565b6111a46113f9565b611216576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6112e283338433856129c8565b505050565b60405160200180806136be6037913960370180613572602f9139602f0190506040516020818303038152906040528051906020012081565b600060149054906101000a900460ff16156113a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b6001600060146101000a81548160ff0219169083151502179055506113c6336130a9565b6113ce6131ed565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661143b613330565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b8673ffffffffffffffffffffffffffffffffffffffff16611476611fea565b73ffffffffffffffffffffffffffffffffffffffff16637b2434cb876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156114f257600080fd5b505afa158015611506573d6000803e3d6000fd5b505050506040513d602081101561151c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614611599576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806134ae6045913960600191505060405180910390fd5b60006115a88989898989610c20565b9050600073__Signatures____________________________6334d1a233600454848888886040518663ffffffff1660e01b8152600401808681526020018581526020018460ff1660ff1681526020018381526020018281526020019550505050505060206040518083038186803b15801561162357600080fd5b505af4158015611637573d6000803e3d6000fd5b505050506040513d602081101561164d57600080fd5b810190808051906020019092919050505090508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5369676e617475726520697320696e76616c696400000000000000000000000081525060200191505060405180910390fd5b50505050505050505050565b601481565b6060806060806060600061176789898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050613338565b80975081925050508060405190808252806020026020018201604052801561179e5781602001602082028038833980820191505090505b509450806040519080825280602002602001820160405280156117d05781602001602082028038833980820191505090505b509350806040519080825280602002602001820160405280156118025781602001602082028038833980820191505090505b509250806040519080825280602002602001820160405280156118345781602001602082028038833980820191505090505b50915060009050606060008090505b89899050811015611bd257600160008c815260200190815260200160002060008b8b8481811061186f57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015611a2857838290600052602060002090600302016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815260200190600101906118e6565b50505050915060008090505b8251811015611bb657828181518110611a4957fe5b602002602001015160000151888581518110611a6157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828181518110611aa757fe5b602002602001015160200151878581518110611abf57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828181518110611b0557fe5b602002602001015160400151868581518110611b1d57fe5b602002602001019067ffffffffffffffff16908167ffffffffffffffff1681525050828181518110611b4b57fe5b602002602001015160600151858581518110611b6357fe5b602002602001019067ffffffffffffffff16908167ffffffffffffffff1681525050611b9960018561294090919063ffffffff16565b9350611baf60018261294090919063ffffffff16565b9050611a34565b50611bcb60018261294090919063ffffffff16565b9050611843565b508686868686965096509650965096505050939792965093509350565b601481565b611c048888888888888888611457565b611c1188888888886129c8565b5050505050505050565b60026020528260005260406000206020528160005260406000208181548110611c4057fe5b9060005260206000200160009250925050505481565b818190508484905014611cb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613625602a913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611dd757508473ffffffffffffffffffffffffffffffffffffffff16611d08611fea565b73ffffffffffffffffffffffffffffffffffffffff16637b2434cb336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d8457600080fd5b505afa158015611d98573d6000803e3d6000fd5b505050506040513d6020811015611dae57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16145b611e2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260478152602001806136776047913960600191505060405180910390fd5b60008090505b84849050811015611e9d57611e82858583818110611e4c57fe5b9050602002013587858585818110611e6057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166120c5565b611e9660018261294090919063ffffffff16565b9050611e32565b505050505050565b60016020528260005260406000206020528160005260406000208181548110611eca57fe5b906000526020600020906003020160009250925050508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160149054906101000a900467ffffffffffffffff16908060020160009054906101000a900467ffffffffffffffff16905084565b611f6c6113f9565b611fde576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611fe7816130a9565b50565b600061ce1073ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f4163636f756e74730000000000000000000000000000000000000000000000008152506008019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561208557600080fd5b505afa158015612099573d6000803e3d6000fd5b505050506040513d60208110156120af57600080fd5b8101908080519060200190929190505050905090565b60006001600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008180549050905060008090505b818110156127b0578373ffffffffffffffffffffffffffffffffffffffff1683828154811061215357fe5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121a557612795565b6121ad613445565b8382815481106121b957fe5b90600052602060002090600302016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050905060018303821461247d578360018403815481106122fd57fe5b906000526020600020906003020184838154811061231757fe5b90600052602060002090600302016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820160149054906101000a900467ffffffffffffffff168160010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506002820160009054906101000a900467ffffffffffffffff168160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b8380548061248757fe5b6001900381819060005260206000209060030201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160146101000a81549067ffffffffffffffff02191690556002820160006101000a81549067ffffffffffffffff02191690555050905560008090506000600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008180549050905060008090505b81811015612665578a8382815481106125cd57fe5b9060005260206000200154146125e25761264a565b600182038114612621578260018303815481106125fb57fe5b906000526020600020015483828154811061261257fe5b90600052602060002001819055505b8280548061262b57fe5b6001900381819060005260206000200160009055905560019350612665565b61265e60018261294090919063ffffffff16565b90506125b8565b508261266d57fe5b60006126848b8b8b88602001518960400151610c20565b905060016003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168c7f0e809784d3b3d167f6c74498bc305f88df3512e888b4f0b7fa5f6d06c10a962e886020015189604001518a60600151604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001935050505060405180910390a45050505050505050612802565b6127a960018261294090919063ffffffff16565b9050612128565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061364f6028913960400191505060405180910390fd5b505050565b6000606060009150600083516040519080825280602002602001820160405280156128415781602001602082028038833980820191505090505b50915060008090505b845181101561293157600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008683815181106128a057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905091506128fb828561294090919063ffffffff16565b93508183828151811061290a57fe5b60200260200101818152505061292a60018261294090919063ffffffff16565b905061284a565b50828292509250509250929050565b6000808284019050838110156129be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600360006129d98787878787610c20565b815260200190815260200160002060009054906101000a900460ff1615612a68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4174746573746174696f6e20686173206265656e207265766f6b65640000000081525060200191505060405180910390fd5b60006001600087815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090506014612ad660018361294090919063ffffffff16565b1115612b2d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806135a16032913960400191505060405180910390fd5b6014612bc26001600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061294090919063ffffffff16565b1115612c19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613544602e913960400191505060405180910390fd5b60008090505b81811015612d53578473ffffffffffffffffffffffffffffffffffffffff166001600089815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110612c9957fe5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612d38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613519602b913960400191505060405180910390fd5b612d4c60018261294090919063ffffffff16565b9050612c1f565b506000429050612d61613445565b60405180608001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018567ffffffffffffffff1681526020018367ffffffffffffffff1681525090506001600089815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208890806001815401808255809150509060018203906000526020600020016000909192909190915055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16897f3ed7f328925f9f666cc51d584ea4f0260f040f224d26993c6f89a6eb9845ed6f888887604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001935050505060405180910390a45050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561312f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806134f36026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600046905060405180806135d360529139605201905060405180910390206040518060400160405280601581526020017f4665646572617465644174746573746174696f6e7300000000000000000000008152508051906020012060405180807f312e300000000000000000000000000000000000000000000000000000000000815250600301905060405180910390208330604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001206004819055507ffc0bad7bd2704c62e2e5e69325dc36cb761ace9063381f1bf0152485a052526e6004546040518082815260200191505060405180910390a150565b600033905090565b6000606060009150600083516040519080825280602002602001820160405280156133725781602001602082028038833980820191505090505b50915060008090505b8451811015613436576001600087815260200190815260200160002060008683815181106133a557fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509150613400828561294090919063ffffffff16565b93508183828151811061340f57fe5b60200260200101818152505061342f60018261294090919063ffffffff16565b905061337b565b50828292509250509250929050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152509056fe5369676e6572206973206e6f7420612063757272656e746c7920617574686f72697a6564204174746573746174696f6e5369676e657220666f7220746865206973737565724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734174746573746174696f6e20666f722074686973206163636f756e7420616c7265616479206578697374734d6178206964656e7469666965727320616c7265616479207265676973746572656420666f72206163636f756e7461646472657373206163636f756e742c61646472657373207369676e65722c75696e743634206973737565644f6e294d6178206174746573746174696f6e7320616c7265616479207265676973746572656420666f72206964656e746966696572454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429556e657175616c206e756d626572206f66206964656e7469666965727320616e64206163636f756e74734174746573746174696f6e20746f206265207265766f6b656420646f6573206e6f7420657869737453656e64657220646f6573206e6f742068617665207065726d697373696f6e20746f207265766f6b65206174746573746174696f6e732066726f6d2074686973206973737565724f776e6572736869704174746573746174696f6e2862797465733332206964656e7469666965722c61646472657373206973737565722c53656e64657220646f6573206e6f742068617665207065726d697373696f6e20746f207265766f6b652074686973206174746573746174696f6ea265627a7a72315820642f2b5f62e449fee2ac2cb4b65674878bba2905bafc77f108ff8334da7339b864736f6c634300050d0032",
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80638129fc1c116100c3578063b4b773421161007c578063b4b7734214610889578063b71aae46146108a7578063cba33ce01461096b578063e27ff311146109ed578063e3a1b7c614610adb578063f2fde38b14610bdc5761014d565b80638129fc1c146105395780638da5cb5b146105435780638f32d59b1461058d57806394b09057146105af5780639b43e48014610673578063a862e12e146106915761014d565b80635b07fdd8116101155780635b07fdd8146103155780635fa2fc30146103335780636125a6c214610379578063715018a6146104af57806373dfde98146104b95780637e68298d1461051b5761014d565b80630ab3ddc6146101525780631100b32414610208578063158ef93e1461027657806328c1f99b1461029857806354255be0146102e2575b600080fd5b6101f2600480360360a081101561016857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190505050610c20565b6040518082815260200191505060405180910390f35b6102746004803603606081101561021e57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d48565b005b61027e610f06565b604051808215151515815260200191505060405180910390f35b6102a0610f19565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ea610f1f565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b61031d610f45565b6040518082815260200191505060405180910390f35b61035f6004803603602081101561034957600080fd5b8101908080359060200190929190505050610f4b565b604051808215151515815260200191505060405180910390f35b6104106004803603604081101561038f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156103cc57600080fd5b8201836020820111156103de57600080fd5b8035906020019184602083028401116401000000008311171561040057600080fd5b9091929391929390505050610f6b565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561045757808201518184015260208101905061043c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561049957808201518184015260208101905061047e565b5050505090500194505050505060405180910390f35b6104b761119c565b005b610519600480360360608110156104cf57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff1690602001909291905050506112d5565b005b6105236112e7565b6040518082815260200191505060405180910390f35b61054161131f565b005b61054b6113d0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105956113f9565b604051808215151515815260200191505060405180910390f35b61067160048036036101008110156105c657600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050611457565b005b61067b61170d565b6040518082815260200191505060405180910390f35b610712600480360360408110156106a757600080fd5b8101908080359060200190929190803590602001906401000000008111156106ce57600080fd5b8201836020820111156106e057600080fd5b8035906020019184602083028401116401000000008311171561070257600080fd5b9091929391929390505050611712565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019060200280838360005b8381101561076557808201518184015260208101905061074a565b5050505090500186810385528a818151815260200191508051906020019060200280838360005b838110156107a757808201518184015260208101905061078c565b50505050905001868103845289818151815260200191508051906020019060200280838360005b838110156107e95780820151818401526020810190506107ce565b50505050905001868103835288818151815260200191508051906020019060200280838360005b8381101561082b578082015181840152602081019050610810565b50505050905001868103825287818151815260200191508051906020019060200280838360005b8381101561086d578082015181840152602081019050610852565b505050509050019a505050505050505050505060405180910390f35b610891611bef565b6040518082815260200191505060405180910390f35b61096960048036036101008110156108be57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803567ffffffffffffffff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050611bf4565b005b6109d76004803603606081101561098157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c1b565b6040518082815260200191505060405180910390f35b610ad960048036036060811015610a0357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610a4057600080fd5b820183602082011115610a5257600080fd5b80359060200191846020830284011164010000000083111715610a7457600080fd5b909192939192939080359060200190640100000000811115610a9557600080fd5b820183602082011115610aa757600080fd5b80359060200191846020830284011164010000000083111715610ac957600080fd5b9091929391929390505050611c56565b005b610b3160048036036060811015610af157600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ea5565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff16815260200194505050505060405180910390f35b610c1e60048036036020811015610bf257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f64565b005b600060405160200180806136be6037913960370180613572602f9139602f019050604051602081830303815290604052805190602001208686868686604051602001808781526020018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001965050505050505060405160208183030381529060405280519060200120905095945050505050565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610dad57503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80610ea157508173ffffffffffffffffffffffffffffffffffffffff16610dd2611fea565b73ffffffffffffffffffffffffffffffffffffffff16637b2434cb336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e4e57600080fd5b505afa158015610e62573d6000803e3d6000fd5b505050506040513d6020811015610e7857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16145b610ef6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806136f5603a913960400191505060405180910390fd5b610f018383836120c5565b505050565b600060149054906101000a900460ff1681565b61ce1081565b600080600080600180600080839350829250819150809050935093509350935090919293565b60045481565b60036020528060005260406000206000915054906101000a900460ff1681565b6060806000610fbb86868680806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050612807565b809450819250505080604051908082528060200260200182016040528015610ff25781602001602082028038833980820191505090505b5091506060600080905060008090505b8787905081101561118a57600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089898481811061105a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156110fb57602002820191906000526020600020905b8154815260200190600101908083116110e7575b5050505050925060008090505b835181101561116e5783818151811061111d57fe5b602002602001015186848151811061113157fe5b60200260200101818152505061115160018461294090919063ffffffff16565b925061116760018261294090919063ffffffff16565b9050611108565b5061118360018261294090919063ffffffff16565b9050611002565b50848494509450505050935093915050565b6111a46113f9565b611216576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6112e283338433856129c8565b505050565b60405160200180806136be6037913960370180613572602f9139602f0190506040516020818303038152906040528051906020012081565b600060149054906101000a900460ff16156113a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b6001600060146101000a81548160ff0219169083151502179055506113c6336130a9565b6113ce6131ed565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661143b613330565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b8673ffffffffffffffffffffffffffffffffffffffff16611476611fea565b73ffffffffffffffffffffffffffffffffffffffff16637b2434cb876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156114f257600080fd5b505afa158015611506573d6000803e3d6000fd5b505050506040513d602081101561151c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614611599576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806134ae6045913960600191505060405180910390fd5b60006115a88989898989610c20565b9050600073__Signatures____________________________6334d1a233600454848888886040518663ffffffff1660e01b8152600401808681526020018581526020018460ff1660ff1681526020018381526020018281526020019550505050505060206040518083038186803b15801561162357600080fd5b505af4158015611637573d6000803e3d6000fd5b505050506040513d602081101561164d57600080fd5b810190808051906020019092919050505090508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5369676e617475726520697320696e76616c696400000000000000000000000081525060200191505060405180910390fd5b50505050505050505050565b601481565b6060806060806060600061176789898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050613338565b80975081925050508060405190808252806020026020018201604052801561179e5781602001602082028038833980820191505090505b509450806040519080825280602002602001820160405280156117d05781602001602082028038833980820191505090505b509350806040519080825280602002602001820160405280156118025781602001602082028038833980820191505090505b509250806040519080825280602002602001820160405280156118345781602001602082028038833980820191505090505b50915060009050606060008090505b89899050811015611bd257600160008c815260200190815260200160002060008b8b8481811061186f57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015611a2857838290600052602060002090600302016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050815260200190600101906118e6565b50505050915060008090505b8251811015611bb657828181518110611a4957fe5b602002602001015160000151888581518110611a6157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828181518110611aa757fe5b602002602001015160200151878581518110611abf57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828181518110611b0557fe5b602002602001015160400151868581518110611b1d57fe5b602002602001019067ffffffffffffffff16908167ffffffffffffffff1681525050828181518110611b4b57fe5b602002602001015160600151858581518110611b6357fe5b602002602001019067ffffffffffffffff16908167ffffffffffffffff1681525050611b9960018561294090919063ffffffff16565b9350611baf60018261294090919063ffffffff16565b9050611a34565b50611bcb60018261294090919063ffffffff16565b9050611843565b508686868686965096509650965096505050939792965093509350565b601481565b611c048888888888888888611457565b611c1188888888886129c8565b5050505050505050565b60026020528260005260406000206020528160005260406000208181548110611c4057fe5b9060005260206000200160009250925050505481565b818190508484905014611cb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613625602a913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611dd757508473ffffffffffffffffffffffffffffffffffffffff16611d08611fea565b73ffffffffffffffffffffffffffffffffffffffff16637b2434cb336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d8457600080fd5b505afa158015611d98573d6000803e3d6000fd5b505050506040513d6020811015611dae57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16145b611e2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260478152602001806136776047913960600191505060405180910390fd5b60008090505b84849050811015611e9d57611e82858583818110611e4c57fe5b9050602002013587858585818110611e6057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166120c5565b611e9660018261294090919063ffffffff16565b9050611e32565b505050505050565b60016020528260005260406000206020528160005260406000208181548110611eca57fe5b906000526020600020906003020160009250925050508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160149054906101000a900467ffffffffffffffff16908060020160009054906101000a900467ffffffffffffffff16905084565b611f6c6113f9565b611fde576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611fe7816130a9565b50565b600061ce1073ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f4163636f756e74730000000000000000000000000000000000000000000000008152506008019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561208557600080fd5b505afa158015612099573d6000803e3d6000fd5b505050506040513d60208110156120af57600080fd5b8101908080519060200190929190505050905090565b60006001600085815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008180549050905060008090505b818110156127b0578373ffffffffffffffffffffffffffffffffffffffff1683828154811061215357fe5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121a557612795565b6121ad613445565b8382815481106121b957fe5b90600052602060002090600302016040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681525050905060018303821461247d578360018403815481106122fd57fe5b906000526020600020906003020184838154811061231757fe5b90600052602060002090600302016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001820160149054906101000a900467ffffffffffffffff168160010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506002820160009054906101000a900467ffffffffffffffff168160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b8380548061248757fe5b6001900381819060005260206000209060030201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160146101000a81549067ffffffffffffffff02191690556002820160006101000a81549067ffffffffffffffff02191690555050905560008090506000600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008180549050905060008090505b81811015612665578a8382815481106125cd57fe5b9060005260206000200154146125e25761264a565b600182038114612621578260018303815481106125fb57fe5b906000526020600020015483828154811061261257fe5b90600052602060002001819055505b8280548061262b57fe5b6001900381819060005260206000200160009055905560019350612665565b61265e60018261294090919063ffffffff16565b90506125b8565b508261266d57fe5b60006126848b8b8b88602001518960400151610c20565b905060016003600083815260200190815260200160002060006101000a81548160ff0219169083151502179055508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168c7f0e809784d3b3d167f6c74498bc305f88df3512e888b4f0b7fa5f6d06c10a962e886020015189604001518a60600151604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001935050505060405180910390a45050505050505050612802565b6127a960018261294090919063ffffffff16565b9050612128565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061364f6028913960400191505060405180910390fd5b505050565b6000606060009150600083516040519080825280602002602001820160405280156128415781602001602082028038833980820191505090505b50915060008090505b845181101561293157600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008683815181106128a057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905091506128fb828561294090919063ffffffff16565b93508183828151811061290a57fe5b60200260200101818152505061292a60018261294090919063ffffffff16565b905061284a565b50828292509250509250929050565b6000808284019050838110156129be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600360006129d98787878787610c20565b815260200190815260200160002060009054906101000a900460ff1615612a68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4174746573746174696f6e20686173206265656e207265766f6b65640000000081525060200191505060405180910390fd5b60006001600087815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905090506014612ad660018361294090919063ffffffff16565b1115612b2d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806135a16032913960400191505060405180910390fd5b6014612bc26001600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905061294090919063ffffffff16565b1115612c19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613544602e913960400191505060405180910390fd5b60008090505b81811015612d53578473ffffffffffffffffffffffffffffffffffffffff166001600089815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110612c9957fe5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612d38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613519602b913960400191505060405180910390fd5b612d4c60018261294090919063ffffffff16565b9050612c1f565b506000429050612d61613445565b60405180608001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018567ffffffffffffffff1681526020018367ffffffffffffffff1681525090506001600089815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208890806001815401808255809150509060018203906000526020600020016000909192909190915055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16897f3ed7f328925f9f666cc51d584ea4f0260f040f224d26993c6f89a6eb9845ed6f888887604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff1667ffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff168152602001935050505060405180910390a45050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561312f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806134f36026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600046905060405180806135d360529139605201905060405180910390206040518060400160405280601581526020017f4665646572617465644174746573746174696f6e7300000000000000000000008152508051906020012060405180807f312e300000000000000000000000000000000000000000000000000000000000815250600301905060405180910390208330604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001206004819055507ffc0bad7bd2704c62e2e5e69325dc36cb761ace9063381f1bf0152485a052526e6004546040518082815260200191505060405180910390a150565b600033905090565b6000606060009150600083516040519080825280602002602001820160405280156133725781602001602082028038833980820191505090505b50915060008090505b8451811015613436576001600087815260200190815260200160002060008683815181106133a557fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509150613400828561294090919063ffffffff16565b93508183828151811061340f57fe5b60200260200101818152505061342f60018261294090919063ffffffff16565b905061337b565b50828292509250509250929050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152509056fe5369676e6572206973206e6f7420612063757272656e746c7920617574686f72697a6564204174746573746174696f6e5369676e657220666f7220746865206973737565724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734174746573746174696f6e20666f722074686973206163636f756e7420616c7265616479206578697374734d6178206964656e7469666965727320616c7265616479207265676973746572656420666f72206163636f756e7461646472657373206163636f756e742c61646472657373207369676e65722c75696e743634206973737565644f6e294d6178206174746573746174696f6e7320616c7265616479207265676973746572656420666f72206964656e746966696572454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429556e657175616c206e756d626572206f66206964656e7469666965727320616e64206163636f756e74734174746573746174696f6e20746f206265207265766f6b656420646f6573206e6f7420657869737453656e64657220646f6573206e6f742068617665207065726d697373696f6e20746f207265766f6b65206174746573746174696f6e732066726f6d2074686973206973737565724f776e6572736869704174746573746174696f6e2862797465733332206964656e7469666965722c61646472657373206973737565722c53656e64657220646f6573206e6f742068617665207065726d697373696f6e20746f207265766f6b652074686973206174746573746174696f6ea265627a7a72315820642f2b5f62e449fee2ac2cb4b65674878bba2905bafc77f108ff8334da7339b864736f6c634300050d0032",
+ "sourceMap": "604:18705:96:-;;;2831:52;8:9:-1;5:2;;;30:1;27;20:12;5:2;2831:52:96;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2831:52:96;;;;;;;;;;;;;;;;2875:4;698:17:4;718:12;:10;;;:12;;:::i;:::-;698:32;;749:9;740:6;;:18;;;;;;;;;;;;;;;;;;806:9;773:43;;802:1;773:43;;;;;;;;;;;;664:159;135:17:19;130:57;;176:4;162:11;;:18;;;;;;;;;;;;;;;;;;130:57;81:110;2831:52:96;604:18705;;788:96:0;833:15;867:10;860:17;;788:96;:::o;604:18705:96:-;;;;;;;",
+ "deployedSourceMap": "604:18705:96:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;604:18705:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11904:391;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;11904:391:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5377:469;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5377:469:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;53:23:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;995:71:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3057:117:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1651:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1595:51;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1595:51:96;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9632:799;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9632:799:96;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9632:799:96;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9632:799:96;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9632:799:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9632:799:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;9632:799:96;;;;;;;;;;;;;;;;;;;1684:137:4;;;:::i;:::-;;3865:192:96;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3865:192:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1691:227;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3286:116;;;:::i;:::-;;899:77:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1250:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11132:768:96;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;11132:768:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2184:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7707:1380;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7707:1380:96;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7707:1380:96;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7707:1380:96;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;7707:1380:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7707:1380:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7707:1380:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7707:1380:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7707:1380:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;7707:1380:96;;;;;;;;;;;;;;;;;;;;;;;;;2120:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4725:353;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4725:353:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1471:77;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1471:77:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6402:566;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6402:566:96;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6402:566:96;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6402:566:96;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6402:566:96;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6402:566:96;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6402:566:96;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6402:566:96;;;;;;;;;;;;:::i;:::-;;1335:94;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1335:94:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1970:107:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1970:107:4;;;;;;;;;;;;;;;;;;;:::i;:::-;;11904:391:96;12069:7;1770:144;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1770:144:96;;;1755:163;;;;;;12187:10;12209:6;12227:7;12246:6;12264:8;12116:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12116:166:96;;;12097:193;;;;;;12084:206;;11904:391;;;;;;;:::o;5377:469::-;5498:10;5487:21;;:7;:21;;;:153;;;;5630:10;5620:20;;:6;:20;;;5487:153;:227;;;;5708:6;5652:62;;:13;:11;:13::i;:::-;:40;;;5693:10;5652:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5652:52:96;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5652:52:96;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5652:52:96;;;;;;;;;;;;;;;;:62;;;5487:227;5472:316;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5794:47;5813:10;5825:6;5833:7;5794:18;:47::i;:::-;5377:469;;;:::o;53:23:19:-;;;;;;;;;;;;;:::o;995:71:27:-;949:42;995:71;:::o;3057:117:96:-;3108:7;3117;3126;3135;3158:1;3161;3164;3167;3150:19;;;;;;;;;;;;;;;;;;;;3057:117;;;;:::o;1651:36::-;;;;:::o;1595:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;9632:799::-;9746:32;9780:28;9818:24;9886:42;9904:7;9913:14;;9886:42;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9886:42:96;;;;;;:17;:42::i;:::-;9848:80;;;;;;;;9963:16;9949:31;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;9949:31:96;;;;9935:45;;9986:37;10030:17;10050:1;10030:21;;10063:9;10075:1;10063:13;;10058:326;10082:14;;:21;;10078:1;:25;10058:326;;;10150:20;:29;10171:7;10150:29;;;;;;;;;;;;;;;:48;10180:14;;10195:1;10180:17;;;;;;;;;;;;;;;10150:48;;;;;;;;;;;;;;;10127:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10211:9;10223:1;10211:13;;10206:172;10230:20;:27;10226:1;:31;10206:172;;;10308:20;10329:1;10308:23;;;;;;;;;;;;;;10283:11;10295:9;10283:22;;;;;;;;;;;;;:48;;;;;10353:16;10367:1;10353:9;:13;;:16;;;;:::i;:::-;10341:28;;10263:8;10269:1;10263;:5;;:8;;;;:::i;:::-;10259:12;;10206:172;;;;10109:8;10115:1;10109;:5;;:8;;;;:::i;:::-;10105:12;;10058:326;;;;10397:15;10414:11;10389:37;;;;;;;9632:799;;;;;;:::o;1684:137:4:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1745:40;;1766:6;;;;;;;;;;;1745:40;;;;;;;;;;;;1812:1;1795:6;;:19;;;;;;;;;;;;;;;;;;1684:137::o;3865:192:96:-;3977:75;3998:10;4010;4022:7;4031:10;4043:8;3977:20;:75::i;:::-;3865:192;;;:::o;1691:227::-;1770:144;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1770:144:96;;;1755:163;;;;;;1691:227;:::o;3286:116::-;233:11:19;;;;;;;;;;;232:12;224:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;297:4;283:11;;:18;;;;;;;;;;;;;;;;;;3335:30:96;3354:10;3335:18;:30::i;:::-;3371:26;:24;:26::i;:::-;3286:116::o;899:77:4:-;937:7;963:6;;;;;;;;;;;956:13;;899:77;:::o;1250:92::-;1290:4;1329:6;;;;;;;;;;;1313:22;;:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;11132:768:96:-;11499:6;11447:58;;:13;:11;:13::i;:::-;:40;;;11488:6;11447:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11447:48:96;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11447:48:96;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11447:48:96;;;;;;;;;;;;;;;;:58;;;11432:158;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11596:18;11617:71;11642:10;11654:6;11662:7;11671:6;11679:8;11617:24;:71::i;:::-;11596:92;;11694:21;11718:10;:35;11761:21;;11790:10;11808:1;11817;11826;11718:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11718:115:96;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11718:115:96;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11718:115:96;;;;;;;;;;;;;;;;11694:139;;11864:6;11847:23;;:13;:23;;;11839:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11132:768;;;;;;;;;;:::o;2184:56::-;2238:2;2184:56;:::o;7707:1380::-;7832:32;7872:25;7905:24;7937:25;7970:28;8013:25;8083:46;8102:10;8114:14;;8083:46;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;8083:46:96;;;;;;:18;:46::i;:::-;8044:85;;;;;;;;8161:17;8147:32;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;8147:32:96;;;;8136:43;;8209:17;8195:32;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;8195:32:96;;;;8185:42;;8258:17;8245:31;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;8245:31:96;;;;8233:43;;8310:17;8297:31;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;8297:31:96;;;;8282:46;;8355:1;8335:21;;8362:51;8425:9;8437:1;8425:13;;8420:589;8444:14;;:21;;8440:1;:25;8420:589;;;8513:24;:36;8538:10;8513:36;;;;;;;;;;;:55;8550:14;;8565:1;8550:17;;;;;;;;;;;;;;;8513:55;;;;;;;;;;;;;;;8489:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8581:9;8593:1;8581:13;;8576:427;8600:21;:28;8596:1;:32;8576:427;;;8684:21;8706:1;8684:24;;;;;;;;;;;;;;:32;;;8654:8;8663:17;8654:27;;;;;;;;;;;;;:62;;;;;;;;;;;8755:21;8777:1;8755:24;;;;;;;;;;;;;;:31;;;8726:7;8734:17;8726:26;;;;;;;;;;;;;:60;;;;;;;;;;;8827:21;8849:1;8827:24;;;;;;;;;;;;;;:33;;;8796:9;8806:17;8796:28;;;;;;;;;;;;;:64;;;;;;;;;;;8904:21;8926:1;8904:24;;;;;;;;;;;;;;:36;;;8870:12;8883:17;8870:31;;;;;;;;;;;;;:70;;;;;;;;;;;8970:24;8992:1;8970:17;:21;;:24;;;;:::i;:::-;8950:44;;8634:8;8640:1;8634;:5;;:8;;;;:::i;:::-;8630:12;;8576:427;;;;8471:8;8477:1;8471;:5;;:8;;;;:::i;:::-;8467:12;;8420:589;;;;9022:15;9039:8;9049:7;9058:9;9069:12;9014:68;;;;;;;;;;;;7707:1380;;;;;;;;;:::o;2120:60::-;2178:2;2120:60;:::o;4725:353::-;4922:78;4945:10;4957:6;4965:7;4974:6;4982:8;4992:1;4995;4998;4922:22;:78::i;:::-;5006:67;5027:10;5039:6;5047:7;5056:6;5064:8;5006:20;:67::i;:::-;4725:353;;;;;;;;:::o;1471:77::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6402:566::-;6573:8;;:15;;6551:11;;:18;;:37;6543:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6666:10;6656:20;;:6;:20;;;:86;;;;6736:6;6680:62;;:13;:11;:13::i;:::-;:40;;;6721:10;6680:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6680:52:96;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6680:52:96;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6680:52:96;;;;;;;;;;;;;;;;:62;;;6656:86;6641:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6841:9;6853:1;6841:13;;6836:128;6860:11;;:18;;6856:1;:22;6836:128;;;6902:55;6921:11;;6933:1;6921:14;;;;;;;;;;;;;6937:6;6945:8;;6954:1;6945:11;;;;;;;;;;;;;;;6902:18;:55::i;:::-;6884:8;6890:1;6884;:5;;:8;;;;:::i;:::-;6880:12;;6836:128;;;;6402:566;;;;;:::o;1335:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1970:107:4:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;3734:143:27:-;3780:9;949:42;3814:35;;;1130:28;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1130:28:27;;;1120:39;;;;;;3814:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3814:57:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3814:57:27;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3814:57:27;;;;;;;;;;;;;;;;3797:75;;3734:143;:::o;17442:1865:96:-;17537:43;17583:24;:36;17608:10;17583:36;;;;;;;;;;;:44;17620:6;17583:44;;;;;;;;;;;;;;;17537:90;;17633:23;17659:12;:19;;;;17633:45;;17689:9;17701:1;17689:13;;17684:1563;17708:15;17704:1;:19;17684:1563;;;17778:7;17751:34;;:12;17764:1;17751:15;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;:34;;;17747:67;;17797:8;;17747:67;17822:39;;:::i;:::-;17864:12;17877:1;17864:15;;;;;;;;;;;;;;;;;;17822:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18103:1;18085:15;:19;18080:1;:24;18076:100;;18134:12;18165:1;18147:15;:19;18134:33;;;;;;;;;;;;;;;;;;18116:12;18129:1;18116:15;;;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18076:100;18183:12;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18210:22;18235:5;18210:30;;18248:29;18280:20;:29;18301:7;18280:29;;;;;;;;;;;;;;;:37;18310:6;18280:37;;;;;;;;;;;;;;;18248:69;;18325:22;18350:11;:18;;;;18325:43;;18382:9;18394:1;18382:13;;18377:322;18401:14;18397:1;:18;18377:322;;;18463:10;18445:11;18457:1;18445:14;;;;;;;;;;;;;;;;:28;18441:65;;18487:8;;18441:65;18541:1;18524:14;:18;18519:1;:23;18515:100;;18573:11;18602:1;18585:14;:18;18573:31;;;;;;;;;;;;;;;;18556:11;18568:1;18556:14;;;;;;;;;;;;;;;:48;;;;18515:100;18624:11;:17;;;;;;;;;;;;;;;;;;;;;;;;18671:4;18651:24;;18685:5;;18377:322;18421:8;18427:1;18421;:5;;:8;;;;:::i;:::-;18417:12;;18377:322;;;;18795:17;18788:25;;;;18822:23;18848:143;18882:10;18902:6;18918:7;18935:11;:18;;;18963:11;:20;;;18848:24;:143::i;:::-;18822:169;;19038:4;18999:19;:36;19019:15;18999:36;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;19120:7;19056:170;;19104:6;19056:170;;19084:10;19056:170;19137:11;:18;;;19165:11;:20;;;19195:11;:23;;;19056:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19234:7;;;;;;;;;;17684:1563;17729:8;17735:1;17729;:5;;:8;;;;:::i;:::-;17725:12;;17684:1563;;;;19252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17442:1865;;;;:::o;14462:637::-;14574:24;14600:32;14661:1;14642:20;;14668:31;14737:14;:21;14723:36;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;14723:36:96;;;;14705:54;;14771:9;14783:1;14771:13;;14766:281;14790:14;:21;14786:1;:25;14766:281;;;14861:20;:29;14882:7;14861:29;;;;;;;;;;;;;;;:48;14891:14;14906:1;14891:17;;;;;;;;;;;;;;14861:48;;;;;;;;;;;;;;;:55;;;;14835:81;;14943:45;14964:23;14943:16;:20;;:45;;;;:::i;:::-;14924:64;;15017:23;14996:15;15012:1;14996:18;;;;;;;;;;;;;:44;;;;;14817:8;14823:1;14817;:5;;:8;;;;:::i;:::-;14813:12;;14766:281;;;;15060:16;15078:15;15052:42;;;;;14462:637;;;;;:::o;834:176:3:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;15484:1575:96:-;15654:19;:92;15674:71;15699:10;15711:6;15719:7;15728:6;15736:8;15674:24;:71::i;:::-;15654:92;;;;;;;;;;;;;;;;;;;;;15653:93;15638:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15796:31;15830:24;:36;15855:10;15830:36;;;;;;;;;;;:44;15867:6;15830:44;;;;;;;;;;;;;;;:51;;;;15796:85;;2178:2;15902:30;15930:1;15902:23;:27;;:30;;;;:::i;:::-;:65;;15887:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2238:2;16054:51;16103:1;16054:20;:29;16075:7;16054:29;;;;;;;;;;;;;;;:37;16084:6;16054:37;;;;;;;;;;;;;;;:44;;;;:48;;:51;;;;:::i;:::-;:82;;16039:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16210:9;16222:1;16210:13;;16205:442;16229:23;16225:1;:27;16205:442;;;16570:7;16511:66;;:24;:36;16536:10;16511:36;;;;;;;;;;;:44;16548:6;16511:44;;;;;;;;;;;;;;;16556:1;16511:47;;;;;;;;;;;;;;;;;;:55;;;;;;;;;;;;:66;;;;16494:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16258:8;16264:1;16258;:5;;:8;;;;:::i;:::-;16254:12;;16205:442;;;;16652:18;16680:15;16652:44;;16702:39;;:::i;:::-;16744:90;;;;;;;;16772:7;16744:90;;;;;;16787:6;16744:90;;;;;;16801:8;16744:90;;;;;;16817:11;16744:90;;;;;16702:132;;16840:24;:36;16865:10;16840:36;;;;;;;;;;;:44;16877:6;16840:44;;;;;;;;;;;;;;;16890:11;16840:62;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;16840:62:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16908:20;:29;16929:7;16908:29;;;;;;;;;;;;;;;:37;16938:6;16908:37;;;;;;;;;;;;;;;16951:10;16908:54;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;16908:54:96;;;;;;;;;;;;;;;;;;;;;;17015:7;16973:81;;17007:6;16973:81;;16995:10;16973:81;17024:6;17032:8;17042:11;16973:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15484:1575;;;;;;;;:::o;2178:225:4:-;2271:1;2251:22;;:8;:22;;;;2243:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2360:8;2331:38;;2352:6;;;;;;;;;;;2331:38;;;;;;;;;;;;2388:8;2379:6;;:17;;;;;;;;;;;;;;;;;;2178:225;:::o;12405:489:96:-;12456:15;12505:7;12494:18;;12585:115;;;;;;;;;;;;;;;;;;;12720:30;;;;;;;;;;;;;;;;;12710:41;;;;;;12761:16;;;;;;;;;;;;;;;;;;;12787:7;12812:4;12565:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12565:260:96;;;12548:283;;;;;;12524:21;:307;;;;12842:47;12867:21;;12842:47;;;;;;;;;;;;;;;;;;12405:489;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;13354:657:96:-;13470:25;13497:32;13559:1;13539:21;;13566:32;13636:14;:21;13622:36;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;13622:36:96;;;;13604:54;;13670:9;13682:1;13670:13;;13665:293;13689:14;:21;13685:1;:25;13665:293;;;13761:24;:36;13786:10;13761:36;;;;;;;;;;;:55;13798:14;13813:1;13798:17;;;;;;;;;;;;;;13761:55;;;;;;;;;;;;;;;:62;;;;13734:89;;13851:47;13873:24;13851:17;:21;;:47;;;;:::i;:::-;13831:67;;13927:24;13906:15;13922:1;13906:18;;;;;;;;;;;;;:45;;;;;13716:8;13722:1;13716;:5;;:8;;;;:::i;:::-;13712:12;;13665:293;;;;13971:17;13990:15;13963:43;;;;;13354:657;;;;;:::o;604:18705::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
+ "source": "pragma solidity ^0.5.13;\n\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/ownership/Ownable.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\";\nimport \"openzeppelin-solidity/contracts/utils/SafeCast.sol\";\n\nimport \"./interfaces/IFederatedAttestations.sol\";\nimport \"../common/interfaces/IAccounts.sol\";\nimport \"../common/interfaces/ICeloVersionedContract.sol\";\n\nimport \"../common/Initializable.sol\";\nimport \"../common/UsingRegistryV2.sol\";\nimport \"../common/Signatures.sol\";\n\n/**\n * @title Contract mapping identifiers to accounts\n */\ncontract FederatedAttestations is\n IFederatedAttestations,\n ICeloVersionedContract,\n Ownable,\n Initializable,\n UsingRegistryV2\n{\n using SafeMath for uint256;\n using SafeCast for uint256;\n\n struct OwnershipAttestation {\n address account;\n address signer;\n uint64 issuedOn;\n uint64 publishedOn;\n // using uint64 to allow for extra space to add parameters\n }\n\n // Mappings from identifier <-> attestation are separated by issuer,\n // *requiring* users to specify issuers when retrieving attestations.\n // Maintaining bidirectional mappings (vs. in Attestations.sol) makes it possible\n // to perform lookups by identifier or account without indexing event data.\n\n // identifier -> issuer -> attestations\n mapping(bytes32 => mapping(address => OwnershipAttestation[])) public identifierToAttestations;\n // account -> issuer -> identifiers\n mapping(address => mapping(address => bytes32[])) public addressToIdentifiers;\n\n // unique attestation hash -> isRevoked\n mapping(bytes32 => bool) public revokedAttestations;\n\n bytes32 public eip712DomainSeparator;\n bytes32 public constant EIP712_OWNERSHIP_ATTESTATION_TYPEHASH = keccak256(\n abi.encodePacked(\n \"OwnershipAttestation(bytes32 identifier,address issuer,\",\n \"address account,address signer,uint64 issuedOn)\"\n )\n );\n\n // Changing any of these constraints will require re-benchmarking\n // and checking assumptions for batch revocation.\n // These can only be modified by releasing a new version of this contract.\n uint256 public constant MAX_ATTESTATIONS_PER_IDENTIFIER = 20;\n uint256 public constant MAX_IDENTIFIERS_PER_ADDRESS = 20;\n\n event EIP712DomainSeparatorSet(bytes32 eip712DomainSeparator);\n event AttestationRegistered(\n bytes32 indexed identifier,\n address indexed issuer,\n address indexed account,\n address signer,\n uint64 issuedOn,\n uint64 publishedOn\n );\n event AttestationRevoked(\n bytes32 indexed identifier,\n address indexed issuer,\n address indexed account,\n address signer,\n uint64 issuedOn,\n uint64 publishedOn\n );\n\n /**\n * @notice Sets initialized == true on implementation contracts\n * @param test Set to true to skip implementation initialization\n */\n constructor(bool test) public Initializable(test) {}\n\n /**\n * @notice Returns the storage, major, minor, and patch version of the contract.\n * @return The storage, major, minor, and patch version of the contract.\n */\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) {\n return (1, 1, 0, 0);\n }\n\n /**\n * @notice Used in place of the constructor to allow the contract to be upgradable via proxy.\n */\n function initialize() external initializer {\n _transferOwnership(msg.sender);\n setEip712DomainSeparator();\n }\n\n /**\n * @notice Registers an attestation directly from the issuer\n * @param identifier Hash of the identifier to be attested\n * @param account Address of the account being mapped to the identifier\n * @param issuedOn Time at which the issuer issued the attestation in Unix time \n * @dev Attestation signer and issuer in storage is set to msg.sender\n * @dev Throws if an attestation with the same (identifier, issuer, account) already exists\n */\n function registerAttestationAsIssuer(bytes32 identifier, address account, uint64 issuedOn)\n external\n {\n _registerAttestation(identifier, msg.sender, account, msg.sender, issuedOn);\n }\n\n /**\n * @notice Registers an attestation with a valid signature\n * @param identifier Hash of the identifier to be attested\n * @param issuer Address of the attestation issuer\n * @param account Address of the account being mapped to the identifier\n * @param issuedOn Time at which the issuer issued the attestation in Unix time \n * @param signer Address of the signer of the attestation\n * @param v The recovery id of the incoming ECDSA signature\n * @param r Output value r of the ECDSA signature\n * @param s Output value s of the ECDSA signature\n * @dev Throws if an attestation with the same (identifier, issuer, account) already exists\n */\n function registerAttestation(\n bytes32 identifier,\n address issuer,\n address account,\n address signer,\n uint64 issuedOn,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external {\n validateAttestationSig(identifier, issuer, account, signer, issuedOn, v, r, s);\n _registerAttestation(identifier, issuer, account, signer, issuedOn);\n }\n\n /**\n * @notice Revokes an attestation \n * @param identifier Hash of the identifier to be revoked\n * @param issuer Address of the attestation issuer\n * @param account Address of the account mapped to the identifier\n * @dev Throws if sender is not the issuer, signer, or account\n */\n function revokeAttestation(bytes32 identifier, address issuer, address account) external {\n require(\n account == msg.sender ||\n // Minor gas optimization to prevent storage lookup in Accounts.sol if issuer == msg.sender\n issuer == msg.sender ||\n getAccounts().attestationSignerToAccount(msg.sender) == issuer,\n \"Sender does not have permission to revoke this attestation\"\n );\n _revokeAttestation(identifier, issuer, account);\n }\n\n /**\n * @notice Revokes attestations [identifiers <-> accounts] from issuer\n * @param issuer Address of the issuer of all attestations to be revoked\n * @param identifiers Hash of the identifiers\n * @param accounts Addresses of the accounts mapped to the identifiers\n * at the same indices\n * @dev Throws if the number of identifiers and accounts is not the same\n * @dev Throws if sender is not the issuer or currently registered signer of issuer\n * @dev Throws if an attestation is not found for identifiers[i] <-> accounts[i]\n */\n function batchRevokeAttestations(\n address issuer,\n bytes32[] calldata identifiers,\n address[] calldata accounts\n ) external {\n require(identifiers.length == accounts.length, \"Unequal number of identifiers and accounts\");\n require(\n issuer == msg.sender || getAccounts().attestationSignerToAccount(msg.sender) == issuer,\n \"Sender does not have permission to revoke attestations from this issuer\"\n );\n\n for (uint256 i = 0; i < identifiers.length; i = i.add(1)) {\n _revokeAttestation(identifiers[i], issuer, accounts[i]);\n }\n }\n\n /**\n * @notice Returns info about attestations for `identifier` produced by \n * signers of `trustedIssuers`\n * @param identifier Hash of the identifier\n * @param trustedIssuers Array of n issuers whose attestations will be included\n * @return countsPerIssuer Array of number of attestations returned per issuer\n * For m (== sum([0])) found attestations: \n * @return accounts Array of m accounts \n * @return signers Array of m signers\n * @return issuedOns Array of m issuedOns\n * @return publishedOns Array of m publishedOns\n * @dev Adds attestation info to the arrays in order of provided trustedIssuers\n * @dev Expectation that only one attestation exists per (identifier, issuer, account)\n */\n function lookupAttestations(bytes32 identifier, address[] calldata trustedIssuers)\n external\n view\n returns (\n uint256[] memory countsPerIssuer,\n address[] memory accounts,\n address[] memory signers,\n uint64[] memory issuedOns,\n uint64[] memory publishedOns\n )\n {\n uint256 totalAttestations;\n (totalAttestations, countsPerIssuer) = getNumAttestations(identifier, trustedIssuers);\n\n accounts = new address[](totalAttestations);\n signers = new address[](totalAttestations);\n issuedOns = new uint64[](totalAttestations);\n publishedOns = new uint64[](totalAttestations);\n\n totalAttestations = 0;\n OwnershipAttestation[] memory attestationsPerIssuer;\n\n for (uint256 i = 0; i < trustedIssuers.length; i = i.add(1)) {\n attestationsPerIssuer = identifierToAttestations[identifier][trustedIssuers[i]];\n for (uint256 j = 0; j < attestationsPerIssuer.length; j = j.add(1)) {\n accounts[totalAttestations] = attestationsPerIssuer[j].account;\n signers[totalAttestations] = attestationsPerIssuer[j].signer;\n issuedOns[totalAttestations] = attestationsPerIssuer[j].issuedOn;\n publishedOns[totalAttestations] = attestationsPerIssuer[j].publishedOn;\n totalAttestations = totalAttestations.add(1);\n }\n }\n return (countsPerIssuer, accounts, signers, issuedOns, publishedOns);\n }\n\n /**\n * @notice Returns identifiers mapped to `account` by signers of `trustedIssuers`\n * @param account Address of the account\n * @param trustedIssuers Array of n issuers whose identifier mappings will be used\n * @return countsPerIssuer Array of number of identifiers returned per issuer\n * @return identifiers Array (length == sum([0])) of identifiers\n * @dev Adds identifier info to the arrays in order of provided trustedIssuers\n * @dev Expectation that only one attestation exists per (identifier, issuer, account)\n */\n function lookupIdentifiers(address account, address[] calldata trustedIssuers)\n external\n view\n returns (uint256[] memory countsPerIssuer, bytes32[] memory identifiers)\n {\n uint256 totalIdentifiers;\n (totalIdentifiers, countsPerIssuer) = getNumIdentifiers(account, trustedIssuers);\n\n identifiers = new bytes32[](totalIdentifiers);\n bytes32[] memory identifiersPerIssuer;\n\n uint256 currIndex = 0;\n\n for (uint256 i = 0; i < trustedIssuers.length; i = i.add(1)) {\n identifiersPerIssuer = addressToIdentifiers[account][trustedIssuers[i]];\n for (uint256 j = 0; j < identifiersPerIssuer.length; j = j.add(1)) {\n identifiers[currIndex] = identifiersPerIssuer[j];\n currIndex = currIndex.add(1);\n }\n }\n return (countsPerIssuer, identifiers);\n }\n\n /**\n * @notice Validates the given attestation and signature\n * @param identifier Hash of the identifier to be attested\n * @param issuer Address of the attestation issuer\n * @param account Address of the account being mapped to the identifier\n * @param issuedOn Time at which the issuer issued the attestation in Unix time \n * @param signer Address of the signer of the attestation\n * @param v The recovery id of the incoming ECDSA signature\n * @param r Output value r of the ECDSA signature\n * @param s Output value s of the ECDSA signature\n * @dev Throws if attestation has been revoked\n * @dev Throws if signer is not an authorized AttestationSigner of the issuer\n */\n function validateAttestationSig(\n bytes32 identifier,\n address issuer,\n address account,\n address signer,\n uint64 issuedOn,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public view {\n // attestationSignerToAccount instead of isSigner allows the issuer to act as its own signer\n require(\n getAccounts().attestationSignerToAccount(signer) == issuer,\n \"Signer is not a currently authorized AttestationSigner for the issuer\"\n );\n bytes32 structHash = getUniqueAttestationHash(identifier, issuer, account, signer, issuedOn);\n address guessedSigner = Signatures.getSignerOfTypedDataHash(\n eip712DomainSeparator,\n structHash,\n v,\n r,\n s\n );\n require(guessedSigner == signer, \"Signature is invalid\");\n }\n\n function getUniqueAttestationHash(\n bytes32 identifier,\n address issuer,\n address account,\n address signer,\n uint64 issuedOn\n ) public pure returns (bytes32) {\n return\n keccak256(\n abi.encode(\n EIP712_OWNERSHIP_ATTESTATION_TYPEHASH,\n identifier,\n issuer,\n account,\n signer,\n issuedOn\n )\n );\n }\n\n /**\n * @notice Sets the EIP712 domain separator for the Celo FederatedAttestations abstraction.\n */\n function setEip712DomainSeparator() internal {\n uint256 chainId;\n assembly {\n chainId := chainid\n }\n\n eip712DomainSeparator = keccak256(\n abi.encode(\n keccak256(\n \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"\n ),\n keccak256(bytes(\"FederatedAttestations\")),\n keccak256(\"1.0\"),\n chainId,\n address(this)\n )\n );\n emit EIP712DomainSeparatorSet(eip712DomainSeparator);\n }\n\n /**\n * @notice Helper function for lookupAttestations to calculate the\n total number of attestations completed for an identifier\n by each trusted issuer\n * @param identifier Hash of the identifier\n * @param trustedIssuers Array of n issuers whose attestations will be included\n * @return totalAttestations Sum total of attestations found\n * @return countsPerIssuer Array of number of attestations found per issuer\n */\n function getNumAttestations(bytes32 identifier, address[] memory trustedIssuers)\n internal\n view\n returns (uint256 totalAttestations, uint256[] memory countsPerIssuer)\n {\n totalAttestations = 0;\n uint256 numAttestationsForIssuer;\n countsPerIssuer = new uint256[](trustedIssuers.length);\n\n for (uint256 i = 0; i < trustedIssuers.length; i = i.add(1)) {\n numAttestationsForIssuer = identifierToAttestations[identifier][trustedIssuers[i]].length;\n totalAttestations = totalAttestations.add(numAttestationsForIssuer);\n countsPerIssuer[i] = numAttestationsForIssuer;\n }\n return (totalAttestations, countsPerIssuer);\n }\n\n /**\n * @notice Helper function for lookupIdentifiers to calculate the\n total number of identifiers completed for an identifier\n by each trusted issuer\n * @param account Address of the account\n * @param trustedIssuers Array of n issuers whose identifiers will be included\n * @return totalIdentifiers Sum total of identifiers found\n * @return countsPerIssuer Array of number of identifiers found per issuer\n */\n function getNumIdentifiers(address account, address[] memory trustedIssuers)\n internal\n view\n returns (uint256 totalIdentifiers, uint256[] memory countsPerIssuer)\n {\n totalIdentifiers = 0;\n uint256 numIdentifiersForIssuer;\n countsPerIssuer = new uint256[](trustedIssuers.length);\n\n for (uint256 i = 0; i < trustedIssuers.length; i = i.add(1)) {\n numIdentifiersForIssuer = addressToIdentifiers[account][trustedIssuers[i]].length;\n totalIdentifiers = totalIdentifiers.add(numIdentifiersForIssuer);\n countsPerIssuer[i] = numIdentifiersForIssuer;\n }\n return (totalIdentifiers, countsPerIssuer);\n }\n\n /**\n * @notice Registers an attestation\n * @param identifier Hash of the identifier to be attested\n * @param issuer Address of the attestation issuer\n * @param account Address of the account being mapped to the identifier\n * @param issuedOn Time at which the issuer issued the attestation in Unix time \n * @param signer Address of the signer of the attestation\n */\n function _registerAttestation(\n bytes32 identifier,\n address issuer,\n address account,\n address signer,\n uint64 issuedOn\n ) private {\n require(\n !revokedAttestations[getUniqueAttestationHash(identifier, issuer, account, signer, issuedOn)],\n \"Attestation has been revoked\"\n );\n uint256 numExistingAttestations = identifierToAttestations[identifier][issuer].length;\n require(\n numExistingAttestations.add(1) <= MAX_ATTESTATIONS_PER_IDENTIFIER,\n \"Max attestations already registered for identifier\"\n );\n require(\n addressToIdentifiers[account][issuer].length.add(1) <= MAX_IDENTIFIERS_PER_ADDRESS,\n \"Max identifiers already registered for account\"\n );\n\n for (uint256 i = 0; i < numExistingAttestations; i = i.add(1)) {\n // This enforces only one attestation to be uploaded\n // for a given set of (identifier, issuer, account)\n // Editing/upgrading an attestation requires that it be revoked before a new one is registered\n require(\n identifierToAttestations[identifier][issuer][i].account != account,\n \"Attestation for this account already exists\"\n );\n }\n uint64 publishedOn = uint64(block.timestamp);\n OwnershipAttestation memory attestation = OwnershipAttestation(\n account,\n signer,\n issuedOn,\n publishedOn\n );\n identifierToAttestations[identifier][issuer].push(attestation);\n addressToIdentifiers[account][issuer].push(identifier);\n emit AttestationRegistered(identifier, issuer, account, signer, issuedOn, publishedOn);\n }\n\n /**\n * @notice Revokes an attestation:\n * helper function for revokeAttestation and batchRevokeAttestations\n * @param identifier Hash of the identifier to be revoked\n * @param issuer Address of the attestation issuer\n * @param account Address of the account mapped to the identifier\n * @dev Reverts if attestation is not found mapping identifier <-> account\n */\n function _revokeAttestation(bytes32 identifier, address issuer, address account) private {\n OwnershipAttestation[] storage attestations = identifierToAttestations[identifier][issuer];\n uint256 lenAttestations = attestations.length;\n for (uint256 i = 0; i < lenAttestations; i = i.add(1)) {\n if (attestations[i].account != account) {\n continue;\n }\n\n OwnershipAttestation memory attestation = attestations[i];\n // This is meant to delete the attestations in the array\n // and then move the last element in the array to that empty spot,\n // to avoid having empty elements in the array\n if (i != lenAttestations - 1) {\n attestations[i] = attestations[lenAttestations - 1];\n }\n attestations.pop();\n\n bool deletedIdentifier = false;\n bytes32[] storage identifiers = addressToIdentifiers[account][issuer];\n uint256 lenIdentifiers = identifiers.length;\n\n for (uint256 j = 0; j < lenIdentifiers; j = j.add(1)) {\n if (identifiers[j] != identifier) {\n continue;\n }\n if (j != lenIdentifiers - 1) {\n identifiers[j] = identifiers[lenIdentifiers - 1];\n }\n identifiers.pop();\n deletedIdentifier = true;\n break;\n }\n // Should never be false - both mappings should always be updated in unison\n assert(deletedIdentifier);\n\n bytes32 attestationHash = getUniqueAttestationHash(\n identifier,\n issuer,\n account,\n attestation.signer,\n attestation.issuedOn\n );\n revokedAttestations[attestationHash] = true;\n\n emit AttestationRevoked(\n identifier,\n issuer,\n account,\n attestation.signer,\n attestation.issuedOn,\n attestation.publishedOn\n );\n return;\n }\n revert(\"Attestation to be revoked does not exist\");\n }\n}\n",
+ "sourcePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/identity/FederatedAttestations.sol",
+ "ast": {
+ "absolutePath": "project:/contracts/identity/FederatedAttestations.sol",
+ "exportedSymbols": {
+ "FederatedAttestations": [
+ 34897
+ ]
+ },
+ "id": 34898,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 33719,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".13"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:96"
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "id": 33720,
+ "nodeType": "ImportDirective",
+ "scope": 34898,
+ "sourceUnit": 364,
+ "src": "26:59:96",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "id": 33721,
+ "nodeType": "ImportDirective",
+ "scope": 34898,
+ "sourceUnit": 482,
+ "src": "86:63:96",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
+ "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
+ "id": 33722,
+ "nodeType": "ImportDirective",
+ "scope": 34898,
+ "sourceUnit": 956,
+ "src": "150:64:96",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/utils/SafeCast.sol",
+ "file": "openzeppelin-solidity/contracts/utils/SafeCast.sol",
+ "id": 33723,
+ "nodeType": "ImportDirective",
+ "scope": 34898,
+ "sourceUnit": 1359,
+ "src": "215:60:96",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "project:/contracts/identity/interfaces/IFederatedAttestations.sol",
+ "file": "./interfaces/IFederatedAttestations.sol",
+ "id": 33724,
+ "nodeType": "ImportDirective",
+ "scope": 34898,
+ "sourceUnit": 36154,
+ "src": "277:49:96",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "project:/contracts/common/interfaces/IAccounts.sol",
+ "file": "../common/interfaces/IAccounts.sol",
+ "id": 33725,
+ "nodeType": "ImportDirective",
+ "scope": 34898,
+ "sourceUnit": 9065,
+ "src": "327:44:96",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "project:/contracts/common/interfaces/ICeloVersionedContract.sol",
+ "file": "../common/interfaces/ICeloVersionedContract.sol",
+ "id": 33726,
+ "nodeType": "ImportDirective",
+ "scope": 34898,
+ "sourceUnit": 9108,
+ "src": "372:57:96",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "project:/contracts/common/Initializable.sol",
+ "file": "../common/Initializable.sol",
+ "id": 33727,
+ "nodeType": "ImportDirective",
+ "scope": 34898,
+ "sourceUnit": 5885,
+ "src": "431:37:96",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "project:/contracts/common/UsingRegistryV2.sol",
+ "file": "../common/UsingRegistryV2.sol",
+ "id": 33728,
+ "nodeType": "ImportDirective",
+ "scope": 34898,
+ "sourceUnit": 8802,
+ "src": "469:39:96",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "project:/contracts/common/Signatures.sol",
+ "file": "../common/Signatures.sol",
+ "id": 33729,
+ "nodeType": "ImportDirective",
+ "scope": 34898,
+ "sourceUnit": 6903,
+ "src": "509:34:96",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "baseContracts": [
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 33730,
+ "name": "IFederatedAttestations",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 36153,
+ "src": "640:22:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IFederatedAttestations_$36153",
+ "typeString": "contract IFederatedAttestations"
+ }
+ },
+ "id": 33731,
+ "nodeType": "InheritanceSpecifier",
+ "src": "640:22:96"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 33732,
+ "name": "ICeloVersionedContract",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 9107,
+ "src": "666:22:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_ICeloVersionedContract_$9107",
+ "typeString": "contract ICeloVersionedContract"
+ }
+ },
+ "id": 33733,
+ "nodeType": "InheritanceSpecifier",
+ "src": "666:22:96"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 33734,
+ "name": "Ownable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 481,
+ "src": "692:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Ownable_$481",
+ "typeString": "contract Ownable"
+ }
+ },
+ "id": 33735,
+ "nodeType": "InheritanceSpecifier",
+ "src": "692:7:96"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 33736,
+ "name": "Initializable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 5884,
+ "src": "703:13:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Initializable_$5884",
+ "typeString": "contract Initializable"
+ }
+ },
+ "id": 33737,
+ "nodeType": "InheritanceSpecifier",
+ "src": "703:13:96"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 33738,
+ "name": "UsingRegistryV2",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 8801,
+ "src": "720:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_UsingRegistryV2_$8801",
+ "typeString": "contract UsingRegistryV2"
+ }
+ },
+ "id": 33739,
+ "nodeType": "InheritanceSpecifier",
+ "src": "720:15:96"
+ }
+ ],
+ "contractDependencies": [
+ 26,
+ 481,
+ 5884,
+ 8801,
+ 9107,
+ 36153
+ ],
+ "contractKind": "contract",
+ "documentation": "@title Contract mapping identifiers to accounts",
+ "fullyImplemented": true,
+ "id": 34897,
+ "linearizedBaseContracts": [
+ 34897,
+ 8801,
+ 5884,
+ 481,
+ 26,
+ 9107,
+ 36153
+ ],
+ "name": "FederatedAttestations",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "id": 33742,
+ "libraryName": {
+ "contractScope": null,
+ "id": 33740,
+ "name": "SafeMath",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 363,
+ "src": "746:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_SafeMath_$363",
+ "typeString": "library SafeMath"
+ }
+ },
+ "nodeType": "UsingForDirective",
+ "src": "740:27:96",
+ "typeName": {
+ "id": 33741,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "759:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ },
+ {
+ "id": 33745,
+ "libraryName": {
+ "contractScope": null,
+ "id": 33743,
+ "name": "SafeCast",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 1358,
+ "src": "776:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_SafeCast_$1358",
+ "typeString": "library SafeCast"
+ }
+ },
+ "nodeType": "UsingForDirective",
+ "src": "770:27:96",
+ "typeName": {
+ "id": 33744,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "789:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ },
+ {
+ "canonicalName": "FederatedAttestations.OwnershipAttestation",
+ "id": 33754,
+ "members": [
+ {
+ "constant": false,
+ "id": 33747,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 33754,
+ "src": "835:15:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33746,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "835:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33749,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 33754,
+ "src": "856:14:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33748,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "856:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33751,
+ "name": "issuedOn",
+ "nodeType": "VariableDeclaration",
+ "scope": 33754,
+ "src": "876:15:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ "typeName": {
+ "id": 33750,
+ "name": "uint64",
+ "nodeType": "ElementaryTypeName",
+ "src": "876:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33753,
+ "name": "publishedOn",
+ "nodeType": "VariableDeclaration",
+ "scope": 33754,
+ "src": "897:18:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ "typeName": {
+ "id": 33752,
+ "name": "uint64",
+ "nodeType": "ElementaryTypeName",
+ "src": "897:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "name": "OwnershipAttestation",
+ "nodeType": "StructDefinition",
+ "scope": 34897,
+ "src": "801:182:96",
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 33761,
+ "name": "identifierToAttestations",
+ "nodeType": "VariableDeclaration",
+ "scope": 34897,
+ "src": "1335:94:96",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation[]))"
+ },
+ "typeName": {
+ "id": 33760,
+ "keyType": {
+ "id": 33755,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1343:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1335:62:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation[]))"
+ },
+ "valueType": {
+ "id": 33759,
+ "keyType": {
+ "id": 33756,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1362:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1354:42:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$",
+ "typeString": "mapping(address => struct FederatedAttestations.OwnershipAttestation[])"
+ },
+ "valueType": {
+ "baseType": {
+ "contractScope": null,
+ "id": 33757,
+ "name": "OwnershipAttestation",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 33754,
+ "src": "1373:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation"
+ }
+ },
+ "id": 33758,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "1373:22:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation[]"
+ }
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 33768,
+ "name": "addressToIdentifiers",
+ "nodeType": "VariableDeclaration",
+ "scope": 34897,
+ "src": "1471:77:96",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$_$",
+ "typeString": "mapping(address => mapping(address => bytes32[]))"
+ },
+ "typeName": {
+ "id": 33767,
+ "keyType": {
+ "id": 33762,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1479:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1471:49:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$_$",
+ "typeString": "mapping(address => mapping(address => bytes32[]))"
+ },
+ "valueType": {
+ "id": 33766,
+ "keyType": {
+ "id": 33763,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1498:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1490:29:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$",
+ "typeString": "mapping(address => bytes32[])"
+ },
+ "valueType": {
+ "baseType": {
+ "id": 33764,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1509:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "id": 33765,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "1509:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
+ "typeString": "bytes32[]"
+ }
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 33772,
+ "name": "revokedAttestations",
+ "nodeType": "VariableDeclaration",
+ "scope": 34897,
+ "src": "1595:51:96",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
+ "typeString": "mapping(bytes32 => bool)"
+ },
+ "typeName": {
+ "id": 33771,
+ "keyType": {
+ "id": 33769,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1603:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1595:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
+ "typeString": "mapping(bytes32 => bool)"
+ },
+ "valueType": {
+ "id": 33770,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "1614:4:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 33774,
+ "name": "eip712DomainSeparator",
+ "nodeType": "VariableDeclaration",
+ "scope": 34897,
+ "src": "1651:36:96",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 33773,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1651:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "constant": true,
+ "id": 33783,
+ "name": "EIP712_OWNERSHIP_ATTESTATION_TYPEHASH",
+ "nodeType": "VariableDeclaration",
+ "scope": 34897,
+ "src": "1691:227:96",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 33775,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1691:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "4f776e6572736869704174746573746174696f6e2862797465733332206964656e7469666965722c61646472657373206973737565722c",
+ "id": 33779,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1794:57:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_e7a721c79bd6194969de59808d064adfff2bf26ebde6561626c3d8e8f9611f73",
+ "typeString": "literal_string \"OwnershipAttestation(bytes32 identifier,address issuer,\""
+ },
+ "value": "OwnershipAttestation(bytes32 identifier,address issuer,"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "61646472657373206163636f756e742c61646472657373207369676e65722c75696e743634206973737565644f6e29",
+ "id": 33780,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1859:49:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_653717663fcc79e0893d5e59fde23473067ef2d1eb7ef9f8103cd47a120e34e3",
+ "typeString": "literal_string \"address account,address signer,uint64 issuedOn)\""
+ },
+ "value": "address account,address signer,uint64 issuedOn)"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_e7a721c79bd6194969de59808d064adfff2bf26ebde6561626c3d8e8f9611f73",
+ "typeString": "literal_string \"OwnershipAttestation(bytes32 identifier,address issuer,\""
+ },
+ {
+ "typeIdentifier": "t_stringliteral_653717663fcc79e0893d5e59fde23473067ef2d1eb7ef9f8103cd47a120e34e3",
+ "typeString": "literal_string \"address account,address signer,uint64 issuedOn)\""
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 33777,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42893,
+ "src": "1770:3:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 33778,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encodePacked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1770:16:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 33781,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1770:144:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 33776,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42900,
+ "src": "1755:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 33782,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1755:163:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "visibility": "public"
+ },
+ {
+ "constant": true,
+ "id": 33786,
+ "name": "MAX_ATTESTATIONS_PER_IDENTIFIER",
+ "nodeType": "VariableDeclaration",
+ "scope": 34897,
+ "src": "2120:60:96",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 33784,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2120:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "hexValue": "3230",
+ "id": 33785,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2178:2:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_20_by_1",
+ "typeString": "int_const 20"
+ },
+ "value": "20"
+ },
+ "visibility": "public"
+ },
+ {
+ "constant": true,
+ "id": 33789,
+ "name": "MAX_IDENTIFIERS_PER_ADDRESS",
+ "nodeType": "VariableDeclaration",
+ "scope": 34897,
+ "src": "2184:56:96",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 33787,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2184:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "hexValue": "3230",
+ "id": 33788,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2238:2:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_20_by_1",
+ "typeString": "int_const 20"
+ },
+ "value": "20"
+ },
+ "visibility": "public"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 33793,
+ "name": "EIP712DomainSeparatorSet",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 33792,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33791,
+ "indexed": false,
+ "name": "eip712DomainSeparator",
+ "nodeType": "VariableDeclaration",
+ "scope": 33793,
+ "src": "2276:29:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 33790,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "2276:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2275:31:96"
+ },
+ "src": "2245:62:96"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 33807,
+ "name": "AttestationRegistered",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 33806,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33795,
+ "indexed": true,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 33807,
+ "src": "2343:26:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 33794,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "2343:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33797,
+ "indexed": true,
+ "name": "issuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 33807,
+ "src": "2375:22:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33796,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2375:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33799,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 33807,
+ "src": "2403:23:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33798,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2403:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33801,
+ "indexed": false,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 33807,
+ "src": "2432:14:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33800,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2432:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33803,
+ "indexed": false,
+ "name": "issuedOn",
+ "nodeType": "VariableDeclaration",
+ "scope": 33807,
+ "src": "2452:15:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ "typeName": {
+ "id": 33802,
+ "name": "uint64",
+ "nodeType": "ElementaryTypeName",
+ "src": "2452:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33805,
+ "indexed": false,
+ "name": "publishedOn",
+ "nodeType": "VariableDeclaration",
+ "scope": 33807,
+ "src": "2473:18:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ "typeName": {
+ "id": 33804,
+ "name": "uint64",
+ "nodeType": "ElementaryTypeName",
+ "src": "2473:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2337:158:96"
+ },
+ "src": "2310:186:96"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 33821,
+ "name": "AttestationRevoked",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 33820,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33809,
+ "indexed": true,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 33821,
+ "src": "2529:26:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 33808,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "2529:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33811,
+ "indexed": true,
+ "name": "issuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 33821,
+ "src": "2561:22:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33810,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2561:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33813,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 33821,
+ "src": "2589:23:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33812,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2589:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33815,
+ "indexed": false,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 33821,
+ "src": "2618:14:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33814,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2618:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33817,
+ "indexed": false,
+ "name": "issuedOn",
+ "nodeType": "VariableDeclaration",
+ "scope": 33821,
+ "src": "2638:15:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ "typeName": {
+ "id": 33816,
+ "name": "uint64",
+ "nodeType": "ElementaryTypeName",
+ "src": "2638:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33819,
+ "indexed": false,
+ "name": "publishedOn",
+ "nodeType": "VariableDeclaration",
+ "scope": 33821,
+ "src": "2659:18:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ "typeName": {
+ "id": 33818,
+ "name": "uint64",
+ "nodeType": "ElementaryTypeName",
+ "src": "2659:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2523:158:96"
+ },
+ "src": "2499:183:96"
+ },
+ {
+ "body": {
+ "id": 33829,
+ "nodeType": "Block",
+ "src": "2881:2:96",
+ "statements": []
+ },
+ "documentation": "@notice Sets initialized == true on implementation contracts\n@param test Set to true to skip implementation initialization",
+ "id": 33830,
+ "implemented": true,
+ "kind": "constructor",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33826,
+ "name": "test",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33823,
+ "src": "2875:4:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 33827,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 33825,
+ "name": "Initializable",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 5884,
+ "src": "2861:13:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Initializable_$5884_$",
+ "typeString": "type(contract Initializable)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "2861:19:96"
+ }
+ ],
+ "name": "",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 33824,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33823,
+ "name": "test",
+ "nodeType": "VariableDeclaration",
+ "scope": 33830,
+ "src": "2843:9:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 33822,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "2843:4:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2842:11:96"
+ },
+ "returnParameters": {
+ "id": 33828,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "2881:0:96"
+ },
+ "scope": 34897,
+ "src": "2831:52:96",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 33847,
+ "nodeType": "Block",
+ "src": "3144:30:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 33841,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3158:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 33842,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3161:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 33843,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3164:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 33844,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3167:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "id": 33845,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "3157:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_rational_1_by_1_$_t_rational_1_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$",
+ "typeString": "tuple(int_const 1,int_const 1,int_const 0,int_const 0)"
+ }
+ },
+ "functionReturnParameters": 33840,
+ "id": 33846,
+ "nodeType": "Return",
+ "src": "3150:19:96"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the storage, major, minor, and patch version of the contract.\n@return The storage, major, minor, and patch version of the contract.",
+ "id": 33848,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getVersionNumber",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 33831,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3082:2:96"
+ },
+ "returnParameters": {
+ "id": 33840,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33833,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 33848,
+ "src": "3108:7:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 33832,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3108:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33835,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 33848,
+ "src": "3117:7:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 33834,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3117:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33837,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 33848,
+ "src": "3126:7:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 33836,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3126:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33839,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 33848,
+ "src": "3135:7:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 33838,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3135:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3107:36:96"
+ },
+ "scope": 34897,
+ "src": "3057:117:96",
+ "stateMutability": "pure",
+ "superFunction": 9106,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 33861,
+ "nodeType": "Block",
+ "src": "3329:73:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33854,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "3354:3:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 33855,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3354:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 33853,
+ "name": "_transferOwnership",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 480,
+ "src": "3335:18:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 33856,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3335:30:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33857,
+ "nodeType": "ExpressionStatement",
+ "src": "3335:30:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 33858,
+ "name": "setEip712DomainSeparator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34424,
+ "src": "3371:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
+ "typeString": "function ()"
+ }
+ },
+ "id": 33859,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3371:26:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33860,
+ "nodeType": "ExpressionStatement",
+ "src": "3371:26:96"
+ }
+ ]
+ },
+ "documentation": "@notice Used in place of the constructor to allow the contract to be upgradable via proxy.",
+ "id": 33862,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 33851,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 33850,
+ "name": "initializer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 5883,
+ "src": "3317:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "3317:11:96"
+ }
+ ],
+ "name": "initialize",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 33849,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3305:2:96"
+ },
+ "returnParameters": {
+ "id": 33852,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3329:0:96"
+ },
+ "scope": 34897,
+ "src": "3286:116:96",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 33881,
+ "nodeType": "Block",
+ "src": "3971:86:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33872,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33864,
+ "src": "3998:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33873,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "4010:3:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 33874,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "4010:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33875,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33866,
+ "src": "4022:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33876,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "4031:3:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 33877,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "4031:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33878,
+ "name": "issuedOn",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33868,
+ "src": "4043:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ ],
+ "id": 33871,
+ "name": "_registerAttestation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34709,
+ "src": "3977:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint64_$returns$__$",
+ "typeString": "function (bytes32,address,address,address,uint64)"
+ }
+ },
+ "id": 33879,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3977:75:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33880,
+ "nodeType": "ExpressionStatement",
+ "src": "3977:75:96"
+ }
+ ]
+ },
+ "documentation": "@notice Registers an attestation directly from the issuer\n@param identifier Hash of the identifier to be attested\n@param account Address of the account being mapped to the identifier\n@param issuedOn Time at which the issuer issued the attestation in Unix time \n@dev Attestation signer and issuer in storage is set to msg.sender\n@dev Throws if an attestation with the same (identifier, issuer, account) already exists",
+ "id": 33882,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "registerAttestationAsIssuer",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 33869,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33864,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 33882,
+ "src": "3902:18:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 33863,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "3902:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33866,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 33882,
+ "src": "3922:15:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33865,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3922:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33868,
+ "name": "issuedOn",
+ "nodeType": "VariableDeclaration",
+ "scope": 33882,
+ "src": "3939:15:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ "typeName": {
+ "id": 33867,
+ "name": "uint64",
+ "nodeType": "ElementaryTypeName",
+ "src": "3939:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3901:54:96"
+ },
+ "returnParameters": {
+ "id": 33870,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3971:0:96"
+ },
+ "scope": 34897,
+ "src": "3865:192:96",
+ "stateMutability": "nonpayable",
+ "superFunction": 36042,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 33920,
+ "nodeType": "Block",
+ "src": "4916:162:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33902,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33884,
+ "src": "4945:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33903,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33886,
+ "src": "4957:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33904,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33888,
+ "src": "4965:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33905,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33890,
+ "src": "4974:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33906,
+ "name": "issuedOn",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33892,
+ "src": "4982:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33907,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33894,
+ "src": "4992:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33908,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33896,
+ "src": "4995:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33909,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33898,
+ "src": "4998:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 33901,
+ "name": "validateAttestationSig",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34361,
+ "src": "4922:22:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint64_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
+ "typeString": "function (bytes32,address,address,address,uint64,uint8,bytes32,bytes32) view"
+ }
+ },
+ "id": 33910,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4922:78:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33911,
+ "nodeType": "ExpressionStatement",
+ "src": "4922:78:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33913,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33884,
+ "src": "5027:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33914,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33886,
+ "src": "5039:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33915,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33888,
+ "src": "5047:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33916,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33890,
+ "src": "5056:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33917,
+ "name": "issuedOn",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33892,
+ "src": "5064:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ ],
+ "id": 33912,
+ "name": "_registerAttestation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34709,
+ "src": "5006:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint64_$returns$__$",
+ "typeString": "function (bytes32,address,address,address,uint64)"
+ }
+ },
+ "id": 33918,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5006:67:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33919,
+ "nodeType": "ExpressionStatement",
+ "src": "5006:67:96"
+ }
+ ]
+ },
+ "documentation": "@notice Registers an attestation with a valid signature\n@param identifier Hash of the identifier to be attested\n@param issuer Address of the attestation issuer\n@param account Address of the account being mapped to the identifier\n@param issuedOn Time at which the issuer issued the attestation in Unix time \n@param signer Address of the signer of the attestation\n@param v The recovery id of the incoming ECDSA signature\n@param r Output value r of the ECDSA signature\n@param s Output value s of the ECDSA signature\n@dev Throws if an attestation with the same (identifier, issuer, account) already exists",
+ "id": 33921,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "registerAttestation",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 33899,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33884,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 33921,
+ "src": "4759:18:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 33883,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4759:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33886,
+ "name": "issuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 33921,
+ "src": "4783:14:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33885,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4783:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33888,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 33921,
+ "src": "4803:15:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33887,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4803:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33890,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 33921,
+ "src": "4824:14:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33889,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4824:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33892,
+ "name": "issuedOn",
+ "nodeType": "VariableDeclaration",
+ "scope": 33921,
+ "src": "4844:15:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ "typeName": {
+ "id": 33891,
+ "name": "uint64",
+ "nodeType": "ElementaryTypeName",
+ "src": "4844:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33894,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 33921,
+ "src": "4865:7:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 33893,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "4865:5:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33896,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 33921,
+ "src": "4878:9:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 33895,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4878:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33898,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 33921,
+ "src": "4893:9:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 33897,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "4893:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4753:153:96"
+ },
+ "returnParameters": {
+ "id": 33900,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "4916:0:96"
+ },
+ "scope": 34897,
+ "src": "4725:353:96",
+ "stateMutability": "nonpayable",
+ "superFunction": 36061,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 33958,
+ "nodeType": "Block",
+ "src": "5466:380:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 33948,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 33939,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 33934,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 33931,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33927,
+ "src": "5487:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33932,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "5498:3:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 33933,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5498:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "5487:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 33938,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 33935,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33925,
+ "src": "5620:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33936,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "5630:3:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 33937,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5630:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "5620:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "5487:153:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 33947,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33943,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "5693:3:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 33944,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5693:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 33940,
+ "name": "getAccounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8548,
+ "src": "5652:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IAccounts_$9064_$",
+ "typeString": "function () view returns (contract IAccounts)"
+ }
+ },
+ "id": 33941,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5652:13:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IAccounts_$9064",
+ "typeString": "contract IAccounts"
+ }
+ },
+ "id": 33942,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "attestationSignerToAccount",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 8839,
+ "src": "5652:40:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
+ "typeString": "function (address) view external returns (address)"
+ }
+ },
+ "id": 33945,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5652:52:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 33946,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33925,
+ "src": "5708:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "5652:62:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "5487:227:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "53656e64657220646f6573206e6f742068617665207065726d697373696f6e20746f207265766f6b652074686973206174746573746174696f6e",
+ "id": 33949,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "5722:60:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_ffe87c20a2b3631c5e9a4409cdba4a059d6e2c1efb0e02934ed2054e307eb34e",
+ "typeString": "literal_string \"Sender does not have permission to revoke this attestation\""
+ },
+ "value": "Sender does not have permission to revoke this attestation"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_ffe87c20a2b3631c5e9a4409cdba4a059d6e2c1efb0e02934ed2054e307eb34e",
+ "typeString": "literal_string \"Sender does not have permission to revoke this attestation\""
+ }
+ ],
+ "id": 33930,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "5472:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 33950,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5472:316:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33951,
+ "nodeType": "ExpressionStatement",
+ "src": "5472:316:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 33953,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33923,
+ "src": "5813:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33954,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33925,
+ "src": "5825:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 33955,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33927,
+ "src": "5833:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 33952,
+ "name": "_revokeAttestation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34896,
+ "src": "5794:18:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (bytes32,address,address)"
+ }
+ },
+ "id": 33956,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5794:47:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33957,
+ "nodeType": "ExpressionStatement",
+ "src": "5794:47:96"
+ }
+ ]
+ },
+ "documentation": "@notice Revokes an attestation \n@param identifier Hash of the identifier to be revoked\n@param issuer Address of the attestation issuer\n@param account Address of the account mapped to the identifier\n@dev Throws if sender is not the issuer, signer, or account",
+ "id": 33959,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "revokeAttestation",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 33928,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33923,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 33959,
+ "src": "5404:18:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 33922,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "5404:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33925,
+ "name": "issuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 33959,
+ "src": "5424:14:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33924,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5424:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33927,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 33959,
+ "src": "5440:15:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33926,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "5440:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5403:53:96"
+ },
+ "returnParameters": {
+ "id": 33929,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5466:0:96"
+ },
+ "scope": 34897,
+ "src": "5377:469:96",
+ "stateMutability": "nonpayable",
+ "superFunction": 36070,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 34023,
+ "nodeType": "Block",
+ "src": "6537:431:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 33975,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33971,
+ "name": "identifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33964,
+ "src": "6551:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
+ "typeString": "bytes32[] calldata"
+ }
+ },
+ "id": 33972,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "6551:18:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33973,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33967,
+ "src": "6573:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 33974,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "6573:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "6551:37:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "556e657175616c206e756d626572206f66206964656e7469666965727320616e64206163636f756e7473",
+ "id": 33976,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6590:44:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_93041103517ee4536f3f372952036fa7b4b22be4e8399f08ba432c41799de694",
+ "typeString": "literal_string \"Unequal number of identifiers and accounts\""
+ },
+ "value": "Unequal number of identifiers and accounts"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_93041103517ee4536f3f372952036fa7b4b22be4e8399f08ba432c41799de694",
+ "typeString": "literal_string \"Unequal number of identifiers and accounts\""
+ }
+ ],
+ "id": 33970,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "6543:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 33977,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6543:92:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33978,
+ "nodeType": "ExpressionStatement",
+ "src": "6543:92:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 33992,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 33983,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 33980,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33961,
+ "src": "6656:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33981,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "6666:3:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 33982,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "6666:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "6656:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 33991,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 33987,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "6721:3:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 33988,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "6721:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 33984,
+ "name": "getAccounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8548,
+ "src": "6680:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IAccounts_$9064_$",
+ "typeString": "function () view returns (contract IAccounts)"
+ }
+ },
+ "id": 33985,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6680:13:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IAccounts_$9064",
+ "typeString": "contract IAccounts"
+ }
+ },
+ "id": 33986,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "attestationSignerToAccount",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 8839,
+ "src": "6680:40:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
+ "typeString": "function (address) view external returns (address)"
+ }
+ },
+ "id": 33989,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6680:52:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 33990,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33961,
+ "src": "6736:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "6680:62:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "6656:86:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "53656e64657220646f6573206e6f742068617665207065726d697373696f6e20746f207265766f6b65206174746573746174696f6e732066726f6d207468697320697373756572",
+ "id": 33993,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6750:73:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_da7c87636d47b91b09241d06f5e76ba712ec96f0362ee3e321b7617528288a87",
+ "typeString": "literal_string \"Sender does not have permission to revoke attestations from this issuer\""
+ },
+ "value": "Sender does not have permission to revoke attestations from this issuer"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_da7c87636d47b91b09241d06f5e76ba712ec96f0362ee3e321b7617528288a87",
+ "typeString": "literal_string \"Sender does not have permission to revoke attestations from this issuer\""
+ }
+ ],
+ "id": 33979,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "6641:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 33994,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6641:188:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 33995,
+ "nodeType": "ExpressionStatement",
+ "src": "6641:188:96"
+ },
+ {
+ "body": {
+ "id": 34021,
+ "nodeType": "Block",
+ "src": "6894:70:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34012,
+ "name": "identifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33964,
+ "src": "6921:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
+ "typeString": "bytes32[] calldata"
+ }
+ },
+ "id": 34014,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34013,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33997,
+ "src": "6933:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "6921:14:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34015,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33961,
+ "src": "6937:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34016,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33967,
+ "src": "6945:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 34018,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34017,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33997,
+ "src": "6954:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "6945:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 34011,
+ "name": "_revokeAttestation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34896,
+ "src": "6902:18:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$",
+ "typeString": "function (bytes32,address,address)"
+ }
+ },
+ "id": 34019,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6902:55:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 34020,
+ "nodeType": "ExpressionStatement",
+ "src": "6902:55:96"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 34003,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 34000,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33997,
+ "src": "6856:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 34001,
+ "name": "identifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33964,
+ "src": "6860:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
+ "typeString": "bytes32[] calldata"
+ }
+ },
+ "id": 34002,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "6860:18:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "6856:22:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 34022,
+ "initializationExpression": {
+ "assignments": [
+ 33997
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 33997,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 34022,
+ "src": "6841:9:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 33996,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "6841:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 33999,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 33998,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6853:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "6841:13:96"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34009,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34004,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33997,
+ "src": "6880:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 34007,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6890:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 34005,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33997,
+ "src": "6884:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34006,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "6884:5:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 34008,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6884:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "6880:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34010,
+ "nodeType": "ExpressionStatement",
+ "src": "6880:12:96"
+ },
+ "nodeType": "ForStatement",
+ "src": "6836:128:96"
+ }
+ ]
+ },
+ "documentation": "@notice Revokes attestations [identifiers <-> accounts] from issuer\n@param issuer Address of the issuer of all attestations to be revoked\n@param identifiers Hash of the identifiers\n@param accounts Addresses of the accounts mapped to the identifiers\n at the same indices\n@dev Throws if the number of identifiers and accounts is not the same\n@dev Throws if sender is not the issuer or currently registered signer of issuer\n@dev Throws if an attestation is not found for identifiers[i] <-> accounts[i]",
+ "id": 34024,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "batchRevokeAttestations",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 33968,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 33961,
+ "name": "issuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 34024,
+ "src": "6440:14:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 33960,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "6440:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33964,
+ "name": "identifiers",
+ "nodeType": "VariableDeclaration",
+ "scope": 34024,
+ "src": "6460:30:96",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
+ "typeString": "bytes32[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 33962,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "6460:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "id": 33963,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "6460:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
+ "typeString": "bytes32[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 33967,
+ "name": "accounts",
+ "nodeType": "VariableDeclaration",
+ "scope": 34024,
+ "src": "6496:27:96",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 33965,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "6496:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 33966,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "6496:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6434:93:96"
+ },
+ "returnParameters": {
+ "id": 33969,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "6537:0:96"
+ },
+ "scope": 34897,
+ "src": "6402:566:96",
+ "stateMutability": "nonpayable",
+ "superFunction": 36081,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 34194,
+ "nodeType": "Block",
+ "src": "8007:1080:96",
+ "statements": [
+ {
+ "assignments": [
+ 34048
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34048,
+ "name": "totalAttestations",
+ "nodeType": "VariableDeclaration",
+ "scope": 34194,
+ "src": "8013:25:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 34047,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "8013:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34049,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "8013:25:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34057,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 34050,
+ "name": "totalAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34048,
+ "src": "8045:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34051,
+ "name": "countsPerIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34033,
+ "src": "8064:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ }
+ ],
+ "id": 34052,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "TupleExpression",
+ "src": "8044:36:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$",
+ "typeString": "tuple(uint256,uint256[] memory)"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34054,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34026,
+ "src": "8102:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34055,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34029,
+ "src": "8114:14:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ ],
+ "id": 34053,
+ "name": "getNumAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34499,
+ "src": "8083:18:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$",
+ "typeString": "function (bytes32,address[] memory) view returns (uint256,uint256[] memory)"
+ }
+ },
+ "id": 34056,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8083:46:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$",
+ "typeString": "tuple(uint256,uint256[] memory)"
+ }
+ },
+ "src": "8044:85:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 34058,
+ "nodeType": "ExpressionStatement",
+ "src": "8044:85:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34065,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34059,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34036,
+ "src": "8136:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34063,
+ "name": "totalAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34048,
+ "src": "8161:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 34062,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "NewExpression",
+ "src": "8147:13:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
+ "typeString": "function (uint256) pure returns (address[] memory)"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34060,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "8151:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 34061,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "8151:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ }
+ },
+ "id": 34064,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8147:32:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory",
+ "typeString": "address[] memory"
+ }
+ },
+ "src": "8136:43:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "id": 34066,
+ "nodeType": "ExpressionStatement",
+ "src": "8136:43:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34073,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34067,
+ "name": "signers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34039,
+ "src": "8185:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34071,
+ "name": "totalAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34048,
+ "src": "8209:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 34070,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "NewExpression",
+ "src": "8195:13:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$",
+ "typeString": "function (uint256) pure returns (address[] memory)"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34068,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "8199:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 34069,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "8199:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ }
+ },
+ "id": 34072,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8195:32:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory",
+ "typeString": "address[] memory"
+ }
+ },
+ "src": "8185:42:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "id": 34074,
+ "nodeType": "ExpressionStatement",
+ "src": "8185:42:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34081,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34075,
+ "name": "issuedOns",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34042,
+ "src": "8233:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr",
+ "typeString": "uint64[] memory"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34079,
+ "name": "totalAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34048,
+ "src": "8258:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 34078,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "NewExpression",
+ "src": "8245:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint64_$dyn_memory_$",
+ "typeString": "function (uint256) pure returns (uint64[] memory)"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34076,
+ "name": "uint64",
+ "nodeType": "ElementaryTypeName",
+ "src": "8249:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "id": 34077,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "8249:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr",
+ "typeString": "uint64[]"
+ }
+ }
+ },
+ "id": 34080,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8245:31:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint64_$dyn_memory",
+ "typeString": "uint64[] memory"
+ }
+ },
+ "src": "8233:43:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr",
+ "typeString": "uint64[] memory"
+ }
+ },
+ "id": 34082,
+ "nodeType": "ExpressionStatement",
+ "src": "8233:43:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34089,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34083,
+ "name": "publishedOns",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34045,
+ "src": "8282:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr",
+ "typeString": "uint64[] memory"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34087,
+ "name": "totalAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34048,
+ "src": "8310:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 34086,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "NewExpression",
+ "src": "8297:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint64_$dyn_memory_$",
+ "typeString": "function (uint256) pure returns (uint64[] memory)"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34084,
+ "name": "uint64",
+ "nodeType": "ElementaryTypeName",
+ "src": "8301:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "id": 34085,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "8301:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr",
+ "typeString": "uint64[]"
+ }
+ }
+ },
+ "id": 34088,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8297:31:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint64_$dyn_memory",
+ "typeString": "uint64[] memory"
+ }
+ },
+ "src": "8282:46:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr",
+ "typeString": "uint64[] memory"
+ }
+ },
+ "id": 34090,
+ "nodeType": "ExpressionStatement",
+ "src": "8282:46:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34093,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34091,
+ "name": "totalAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34048,
+ "src": "8335:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 34092,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8355:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "8335:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34094,
+ "nodeType": "ExpressionStatement",
+ "src": "8335:21:96"
+ },
+ {
+ "assignments": [
+ 34098
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34098,
+ "name": "attestationsPerIssuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 34194,
+ "src": "8362:51:96",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_memory_$dyn_memory_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation[]"
+ },
+ "typeName": {
+ "baseType": {
+ "contractScope": null,
+ "id": 34096,
+ "name": "OwnershipAttestation",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 33754,
+ "src": "8362:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation"
+ }
+ },
+ "id": 34097,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "8362:22:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34099,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "8362:51:96"
+ },
+ {
+ "body": {
+ "id": 34185,
+ "nodeType": "Block",
+ "src": "8481:528:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34123,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34115,
+ "name": "attestationsPerIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34098,
+ "src": "8489:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_memory_$dyn_memory_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation memory[] memory"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34116,
+ "name": "identifierToAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33761,
+ "src": "8513:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))"
+ }
+ },
+ "id": 34118,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34117,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34026,
+ "src": "8538:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "8513:36:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$",
+ "typeString": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)"
+ }
+ },
+ "id": 34122,
+ "indexExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34119,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34029,
+ "src": "8550:14:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 34121,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34120,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34101,
+ "src": "8565:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "8550:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "8513:55:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref"
+ }
+ },
+ "src": "8489:79:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_memory_$dyn_memory_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation memory[] memory"
+ }
+ },
+ "id": 34124,
+ "nodeType": "ExpressionStatement",
+ "src": "8489:79:96"
+ },
+ {
+ "body": {
+ "id": 34183,
+ "nodeType": "Block",
+ "src": "8644:359:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34147,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34140,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34036,
+ "src": "8654:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "id": 34142,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34141,
+ "name": "totalAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34048,
+ "src": "8663:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "8654:27:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34143,
+ "name": "attestationsPerIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34098,
+ "src": "8684:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_memory_$dyn_memory_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation memory[] memory"
+ }
+ },
+ "id": 34145,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34144,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34126,
+ "src": "8706:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "8684:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation memory"
+ }
+ },
+ "id": 34146,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "account",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 33747,
+ "src": "8684:32:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "8654:62:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 34148,
+ "nodeType": "ExpressionStatement",
+ "src": "8654:62:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34156,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34149,
+ "name": "signers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34039,
+ "src": "8726:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "id": 34151,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34150,
+ "name": "totalAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34048,
+ "src": "8734:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "8726:26:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34152,
+ "name": "attestationsPerIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34098,
+ "src": "8755:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_memory_$dyn_memory_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation memory[] memory"
+ }
+ },
+ "id": 34154,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34153,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34126,
+ "src": "8777:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "8755:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation memory"
+ }
+ },
+ "id": 34155,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signer",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 33749,
+ "src": "8755:31:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "8726:60:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 34157,
+ "nodeType": "ExpressionStatement",
+ "src": "8726:60:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34165,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34158,
+ "name": "issuedOns",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34042,
+ "src": "8796:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr",
+ "typeString": "uint64[] memory"
+ }
+ },
+ "id": 34160,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34159,
+ "name": "totalAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34048,
+ "src": "8806:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "8796:28:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34161,
+ "name": "attestationsPerIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34098,
+ "src": "8827:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_memory_$dyn_memory_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation memory[] memory"
+ }
+ },
+ "id": 34163,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34162,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34126,
+ "src": "8849:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "8827:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation memory"
+ }
+ },
+ "id": 34164,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "issuedOn",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 33751,
+ "src": "8827:33:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "src": "8796:64:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "id": 34166,
+ "nodeType": "ExpressionStatement",
+ "src": "8796:64:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34174,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34167,
+ "name": "publishedOns",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34045,
+ "src": "8870:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr",
+ "typeString": "uint64[] memory"
+ }
+ },
+ "id": 34169,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34168,
+ "name": "totalAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34048,
+ "src": "8883:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "8870:31:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34170,
+ "name": "attestationsPerIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34098,
+ "src": "8904:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_memory_$dyn_memory_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation memory[] memory"
+ }
+ },
+ "id": 34172,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34171,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34126,
+ "src": "8926:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "8904:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation memory"
+ }
+ },
+ "id": 34173,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "publishedOn",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 33753,
+ "src": "8904:36:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "src": "8870:70:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "id": 34175,
+ "nodeType": "ExpressionStatement",
+ "src": "8870:70:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34181,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34176,
+ "name": "totalAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34048,
+ "src": "8950:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 34179,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8992:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 34177,
+ "name": "totalAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34048,
+ "src": "8970:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34178,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "8970:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 34180,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8970:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "8950:44:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34182,
+ "nodeType": "ExpressionStatement",
+ "src": "8950:44:96"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 34132,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 34129,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34126,
+ "src": "8596:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 34130,
+ "name": "attestationsPerIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34098,
+ "src": "8600:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_memory_$dyn_memory_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation memory[] memory"
+ }
+ },
+ "id": 34131,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8600:28:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "8596:32:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 34184,
+ "initializationExpression": {
+ "assignments": [
+ 34126
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34126,
+ "name": "j",
+ "nodeType": "VariableDeclaration",
+ "scope": 34184,
+ "src": "8581:9:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 34125,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "8581:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34128,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 34127,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8593:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "8581:13:96"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34138,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34133,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34126,
+ "src": "8630:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 34136,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8640:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 34134,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34126,
+ "src": "8634:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34135,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "8634:5:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 34137,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8634:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "8630:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34139,
+ "nodeType": "ExpressionStatement",
+ "src": "8630:12:96"
+ },
+ "nodeType": "ForStatement",
+ "src": "8576:427:96"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 34107,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 34104,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34101,
+ "src": "8440:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 34105,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34029,
+ "src": "8444:14:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 34106,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8444:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "8440:25:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 34186,
+ "initializationExpression": {
+ "assignments": [
+ 34101
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34101,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 34186,
+ "src": "8425:9:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 34100,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "8425:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34103,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 34102,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8437:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "8425:13:96"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34113,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34108,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34101,
+ "src": "8467:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 34111,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8477:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 34109,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34101,
+ "src": "8471:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34110,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "8471:5:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 34112,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8471:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "8467:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34114,
+ "nodeType": "ExpressionStatement",
+ "src": "8467:12:96"
+ },
+ "nodeType": "ForStatement",
+ "src": "8420:589:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 34187,
+ "name": "countsPerIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34033,
+ "src": "9022:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34188,
+ "name": "accounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34036,
+ "src": "9039:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34189,
+ "name": "signers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34039,
+ "src": "9049:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34190,
+ "name": "issuedOns",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34042,
+ "src": "9058:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr",
+ "typeString": "uint64[] memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34191,
+ "name": "publishedOns",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34045,
+ "src": "9069:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr",
+ "typeString": "uint64[] memory"
+ }
+ }
+ ],
+ "id": 34192,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "9021:61:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint64_$dyn_memory_ptr_$_t_array$_t_uint64_$dyn_memory_ptr_$",
+ "typeString": "tuple(uint256[] memory,address[] memory,address[] memory,uint64[] memory,uint64[] memory)"
+ }
+ },
+ "functionReturnParameters": 34046,
+ "id": 34193,
+ "nodeType": "Return",
+ "src": "9014:68:96"
+ }
+ ]
+ },
+ "documentation": "@notice Returns info about attestations for `identifier` produced by \n signers of `trustedIssuers`\n@param identifier Hash of the identifier\n@param trustedIssuers Array of n issuers whose attestations will be included\n@return countsPerIssuer Array of number of attestations returned per issuer\n For m (== sum([0])) found attestations: \n@return accounts Array of m accounts \n@return signers Array of m signers\n@return issuedOns Array of m issuedOns\n@return publishedOns Array of m publishedOns\n@dev Adds attestation info to the arrays in order of provided trustedIssuers\n@dev Expectation that only one attestation exists per (identifier, issuer, account)",
+ "id": 34195,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "lookupAttestations",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 34030,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 34026,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 34195,
+ "src": "7735:18:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 34025,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "7735:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34029,
+ "name": "trustedIssuers",
+ "nodeType": "VariableDeclaration",
+ "scope": 34195,
+ "src": "7755:33:96",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34027,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "7755:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 34028,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "7755:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "7734:55:96"
+ },
+ "returnParameters": {
+ "id": 34046,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 34033,
+ "name": "countsPerIssuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 34195,
+ "src": "7832:32:96",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34031,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "7832:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34032,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "7832:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34036,
+ "name": "accounts",
+ "nodeType": "VariableDeclaration",
+ "scope": 34195,
+ "src": "7872:25:96",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34034,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "7872:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 34035,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "7872:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34039,
+ "name": "signers",
+ "nodeType": "VariableDeclaration",
+ "scope": 34195,
+ "src": "7905:24:96",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34037,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "7905:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 34038,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "7905:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34042,
+ "name": "issuedOns",
+ "nodeType": "VariableDeclaration",
+ "scope": 34195,
+ "src": "7937:25:96",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr",
+ "typeString": "uint64[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34040,
+ "name": "uint64",
+ "nodeType": "ElementaryTypeName",
+ "src": "7937:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "id": 34041,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "7937:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr",
+ "typeString": "uint64[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34045,
+ "name": "publishedOns",
+ "nodeType": "VariableDeclaration",
+ "scope": 34195,
+ "src": "7970:28:96",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint64_$dyn_memory_ptr",
+ "typeString": "uint64[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34043,
+ "name": "uint64",
+ "nodeType": "ElementaryTypeName",
+ "src": "7970:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "id": 34044,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "7970:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint64_$dyn_storage_ptr",
+ "typeString": "uint64[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "7824:180:96"
+ },
+ "scope": 34897,
+ "src": "7707:1380:96",
+ "stateMutability": "view",
+ "superFunction": 36104,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 34301,
+ "nodeType": "Block",
+ "src": "9812:619:96",
+ "statements": [
+ {
+ "assignments": [
+ 34210
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34210,
+ "name": "totalIdentifiers",
+ "nodeType": "VariableDeclaration",
+ "scope": 34301,
+ "src": "9818:24:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 34209,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "9818:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34211,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "9818:24:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34219,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 34212,
+ "name": "totalIdentifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34210,
+ "src": "9849:16:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34213,
+ "name": "countsPerIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34204,
+ "src": "9867:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ }
+ ],
+ "id": 34214,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "TupleExpression",
+ "src": "9848:35:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$",
+ "typeString": "tuple(uint256,uint256[] memory)"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34216,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34197,
+ "src": "9904:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34217,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34200,
+ "src": "9913:14:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ ],
+ "id": 34215,
+ "name": "getNumIdentifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34574,
+ "src": "9886:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$",
+ "typeString": "function (address,address[] memory) view returns (uint256,uint256[] memory)"
+ }
+ },
+ "id": 34218,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9886:42:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$",
+ "typeString": "tuple(uint256,uint256[] memory)"
+ }
+ },
+ "src": "9848:80:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 34220,
+ "nodeType": "ExpressionStatement",
+ "src": "9848:80:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34227,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34221,
+ "name": "identifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34207,
+ "src": "9935:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
+ "typeString": "bytes32[] memory"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34225,
+ "name": "totalIdentifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34210,
+ "src": "9963:16:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 34224,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "NewExpression",
+ "src": "9949:13:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_$",
+ "typeString": "function (uint256) pure returns (bytes32[] memory)"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34222,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "9953:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "id": 34223,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "9953:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
+ "typeString": "bytes32[]"
+ }
+ }
+ },
+ "id": 34226,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9949:31:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_memory",
+ "typeString": "bytes32[] memory"
+ }
+ },
+ "src": "9935:45:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
+ "typeString": "bytes32[] memory"
+ }
+ },
+ "id": 34228,
+ "nodeType": "ExpressionStatement",
+ "src": "9935:45:96"
+ },
+ {
+ "assignments": [
+ 34232
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34232,
+ "name": "identifiersPerIssuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 34301,
+ "src": "9986:37:96",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
+ "typeString": "bytes32[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34230,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "9986:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "id": 34231,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "9986:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
+ "typeString": "bytes32[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34233,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "9986:37:96"
+ },
+ {
+ "assignments": [
+ 34235
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34235,
+ "name": "currIndex",
+ "nodeType": "VariableDeclaration",
+ "scope": 34301,
+ "src": "10030:17:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 34234,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "10030:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34237,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 34236,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10050:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "10030:21:96"
+ },
+ {
+ "body": {
+ "id": 34295,
+ "nodeType": "Block",
+ "src": "10119:265:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34261,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34253,
+ "name": "identifiersPerIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34232,
+ "src": "10127:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
+ "typeString": "bytes32[] memory"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34254,
+ "name": "addressToIdentifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33768,
+ "src": "10150:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$_$",
+ "typeString": "mapping(address => mapping(address => bytes32[] storage ref))"
+ }
+ },
+ "id": 34256,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34255,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34197,
+ "src": "10171:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "10150:29:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$",
+ "typeString": "mapping(address => bytes32[] storage ref)"
+ }
+ },
+ "id": 34260,
+ "indexExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34257,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34200,
+ "src": "10180:14:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 34259,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34258,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34239,
+ "src": "10195:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "10180:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "10150:48:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
+ "typeString": "bytes32[] storage ref"
+ }
+ },
+ "src": "10127:71:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
+ "typeString": "bytes32[] memory"
+ }
+ },
+ "id": 34262,
+ "nodeType": "ExpressionStatement",
+ "src": "10127:71:96"
+ },
+ {
+ "body": {
+ "id": 34293,
+ "nodeType": "Block",
+ "src": "10273:105:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34284,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34278,
+ "name": "identifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34207,
+ "src": "10283:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
+ "typeString": "bytes32[] memory"
+ }
+ },
+ "id": 34280,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34279,
+ "name": "currIndex",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34235,
+ "src": "10295:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "10283:22:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34281,
+ "name": "identifiersPerIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34232,
+ "src": "10308:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
+ "typeString": "bytes32[] memory"
+ }
+ },
+ "id": 34283,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34282,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34264,
+ "src": "10329:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "10308:23:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "10283:48:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "id": 34285,
+ "nodeType": "ExpressionStatement",
+ "src": "10283:48:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34291,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34286,
+ "name": "currIndex",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34235,
+ "src": "10341:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 34289,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10367:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 34287,
+ "name": "currIndex",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34235,
+ "src": "10353:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34288,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "10353:13:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 34290,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10353:16:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "10341:28:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34292,
+ "nodeType": "ExpressionStatement",
+ "src": "10341:28:96"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 34270,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 34267,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34264,
+ "src": "10226:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 34268,
+ "name": "identifiersPerIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34232,
+ "src": "10230:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
+ "typeString": "bytes32[] memory"
+ }
+ },
+ "id": 34269,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10230:27:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "10226:31:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 34294,
+ "initializationExpression": {
+ "assignments": [
+ 34264
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34264,
+ "name": "j",
+ "nodeType": "VariableDeclaration",
+ "scope": 34294,
+ "src": "10211:9:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 34263,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "10211:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34266,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 34265,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10223:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "10211:13:96"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34276,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34271,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34264,
+ "src": "10259:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 34274,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10269:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 34272,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34264,
+ "src": "10263:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34273,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "10263:5:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 34275,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10263:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "10259:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34277,
+ "nodeType": "ExpressionStatement",
+ "src": "10259:12:96"
+ },
+ "nodeType": "ForStatement",
+ "src": "10206:172:96"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 34245,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 34242,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34239,
+ "src": "10078:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 34243,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34200,
+ "src": "10082:14:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 34244,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10082:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "10078:25:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 34296,
+ "initializationExpression": {
+ "assignments": [
+ 34239
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34239,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 34296,
+ "src": "10063:9:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 34238,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "10063:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34241,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 34240,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10075:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "10063:13:96"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34251,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34246,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34239,
+ "src": "10105:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 34249,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10115:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 34247,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34239,
+ "src": "10109:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34248,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "10109:5:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 34250,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10109:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "10105:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34252,
+ "nodeType": "ExpressionStatement",
+ "src": "10105:12:96"
+ },
+ "nodeType": "ForStatement",
+ "src": "10058:326:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 34297,
+ "name": "countsPerIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34204,
+ "src": "10397:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34298,
+ "name": "identifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34207,
+ "src": "10414:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
+ "typeString": "bytes32[] memory"
+ }
+ }
+ ],
+ "id": 34299,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "10396:30:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$",
+ "typeString": "tuple(uint256[] memory,bytes32[] memory)"
+ }
+ },
+ "functionReturnParameters": 34208,
+ "id": 34300,
+ "nodeType": "Return",
+ "src": "10389:37:96"
+ }
+ ]
+ },
+ "documentation": "@notice Returns identifiers mapped to `account` by signers of `trustedIssuers`\n@param account Address of the account\n@param trustedIssuers Array of n issuers whose identifier mappings will be used\n@return countsPerIssuer Array of number of identifiers returned per issuer\n@return identifiers Array (length == sum([0])) of identifiers\n@dev Adds identifier info to the arrays in order of provided trustedIssuers\n@dev Expectation that only one attestation exists per (identifier, issuer, account)",
+ "id": 34302,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "lookupIdentifiers",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 34201,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 34197,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 34302,
+ "src": "9659:15:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 34196,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "9659:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34200,
+ "name": "trustedIssuers",
+ "nodeType": "VariableDeclaration",
+ "scope": 34302,
+ "src": "9676:33:96",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34198,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "9676:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 34199,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "9676:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "9658:52:96"
+ },
+ "returnParameters": {
+ "id": 34208,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 34204,
+ "name": "countsPerIssuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 34302,
+ "src": "9746:32:96",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34202,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "9746:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34203,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "9746:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34207,
+ "name": "identifiers",
+ "nodeType": "VariableDeclaration",
+ "scope": 34302,
+ "src": "9780:28:96",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
+ "typeString": "bytes32[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34205,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "9780:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "id": 34206,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "9780:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
+ "typeString": "bytes32[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "9745:64:96"
+ },
+ "scope": 34897,
+ "src": "9632:799:96",
+ "stateMutability": "view",
+ "superFunction": 36118,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 34360,
+ "nodeType": "Block",
+ "src": "11329:571:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 34328,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34325,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34310,
+ "src": "11488:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 34322,
+ "name": "getAccounts",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8548,
+ "src": "11447:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IAccounts_$9064_$",
+ "typeString": "function () view returns (contract IAccounts)"
+ }
+ },
+ "id": 34323,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11447:13:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IAccounts_$9064",
+ "typeString": "contract IAccounts"
+ }
+ },
+ "id": 34324,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "attestationSignerToAccount",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 8839,
+ "src": "11447:40:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
+ "typeString": "function (address) view external returns (address)"
+ }
+ },
+ "id": 34326,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11447:48:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 34327,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34306,
+ "src": "11499:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "11447:58:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "5369676e6572206973206e6f7420612063757272656e746c7920617574686f72697a6564204174746573746174696f6e5369676e657220666f722074686520697373756572",
+ "id": 34329,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11513:71:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_0d0f603cad26b0a7f7c900175c42ace56258644b1a0b026654db55cca9775d61",
+ "typeString": "literal_string \"Signer is not a currently authorized AttestationSigner for the issuer\""
+ },
+ "value": "Signer is not a currently authorized AttestationSigner for the issuer"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_0d0f603cad26b0a7f7c900175c42ace56258644b1a0b026654db55cca9775d61",
+ "typeString": "literal_string \"Signer is not a currently authorized AttestationSigner for the issuer\""
+ }
+ ],
+ "id": 34321,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "11432:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 34330,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11432:158:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 34331,
+ "nodeType": "ExpressionStatement",
+ "src": "11432:158:96"
+ },
+ {
+ "assignments": [
+ 34333
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34333,
+ "name": "structHash",
+ "nodeType": "VariableDeclaration",
+ "scope": 34360,
+ "src": "11596:18:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 34332,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "11596:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34341,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34335,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34304,
+ "src": "11642:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34336,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34306,
+ "src": "11654:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34337,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34308,
+ "src": "11662:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34338,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34310,
+ "src": "11671:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34339,
+ "name": "issuedOn",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34312,
+ "src": "11679:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ ],
+ "id": 34334,
+ "name": "getUniqueAttestationHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34389,
+ "src": "11617:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint64_$returns$_t_bytes32_$",
+ "typeString": "function (bytes32,address,address,address,uint64) pure returns (bytes32)"
+ }
+ },
+ "id": 34340,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11617:71:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "11596:92:96"
+ },
+ {
+ "assignments": [
+ 34343
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34343,
+ "name": "guessedSigner",
+ "nodeType": "VariableDeclaration",
+ "scope": 34360,
+ "src": "11694:21:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 34342,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "11694:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34352,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34346,
+ "name": "eip712DomainSeparator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33774,
+ "src": "11761:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34347,
+ "name": "structHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34333,
+ "src": "11790:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34348,
+ "name": "v",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34314,
+ "src": "11808:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34349,
+ "name": "r",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34316,
+ "src": "11817:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34350,
+ "name": "s",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34318,
+ "src": "11826:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 34344,
+ "name": "Signatures",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6902,
+ "src": "11718:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Signatures_$6902_$",
+ "typeString": "type(library Signatures)"
+ }
+ },
+ "id": 34345,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getSignerOfTypedDataHash",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 6901,
+ "src": "11718:35:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (bytes32,bytes32,uint8,bytes32,bytes32) pure returns (address)"
+ }
+ },
+ "id": 34351,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11718:115:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "11694:139:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 34356,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 34354,
+ "name": "guessedSigner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34343,
+ "src": "11847:13:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 34355,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34310,
+ "src": "11864:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "11847:23:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "5369676e617475726520697320696e76616c6964",
+ "id": 34357,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11872:22:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_7d2f6f5fa261eb0ccc45f72c25844aab84ce43b7439d406df0dc6e1abf359a1f",
+ "typeString": "literal_string \"Signature is invalid\""
+ },
+ "value": "Signature is invalid"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_7d2f6f5fa261eb0ccc45f72c25844aab84ce43b7439d406df0dc6e1abf359a1f",
+ "typeString": "literal_string \"Signature is invalid\""
+ }
+ ],
+ "id": 34353,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "11839:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 34358,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11839:56:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 34359,
+ "nodeType": "ExpressionStatement",
+ "src": "11839:56:96"
+ }
+ ]
+ },
+ "documentation": "@notice Validates the given attestation and signature\n@param identifier Hash of the identifier to be attested\n@param issuer Address of the attestation issuer\n@param account Address of the account being mapped to the identifier\n@param issuedOn Time at which the issuer issued the attestation in Unix time \n@param signer Address of the signer of the attestation\n@param v The recovery id of the incoming ECDSA signature\n@param r Output value r of the ECDSA signature\n@param s Output value s of the ECDSA signature\n@dev Throws if attestation has been revoked\n@dev Throws if signer is not an authorized AttestationSigner of the issuer",
+ "id": 34361,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "validateAttestationSig",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 34319,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 34304,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 34361,
+ "src": "11169:18:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 34303,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "11169:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34306,
+ "name": "issuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 34361,
+ "src": "11193:14:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 34305,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "11193:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34308,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 34361,
+ "src": "11213:15:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 34307,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "11213:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34310,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 34361,
+ "src": "11234:14:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 34309,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "11234:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34312,
+ "name": "issuedOn",
+ "nodeType": "VariableDeclaration",
+ "scope": 34361,
+ "src": "11254:15:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ "typeName": {
+ "id": 34311,
+ "name": "uint64",
+ "nodeType": "ElementaryTypeName",
+ "src": "11254:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34314,
+ "name": "v",
+ "nodeType": "VariableDeclaration",
+ "scope": 34361,
+ "src": "11275:7:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 34313,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "11275:5:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34316,
+ "name": "r",
+ "nodeType": "VariableDeclaration",
+ "scope": 34361,
+ "src": "11288:9:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 34315,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "11288:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34318,
+ "name": "s",
+ "nodeType": "VariableDeclaration",
+ "scope": 34361,
+ "src": "11303:9:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 34317,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "11303:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "11163:153:96"
+ },
+ "returnParameters": {
+ "id": 34320,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "11329:0:96"
+ },
+ "scope": 34897,
+ "src": "11132:768:96",
+ "stateMutability": "view",
+ "superFunction": 36137,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 34388,
+ "nodeType": "Block",
+ "src": "12078:217:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34379,
+ "name": "EIP712_OWNERSHIP_ATTESTATION_TYPEHASH",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33783,
+ "src": "12138:37:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34380,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34363,
+ "src": "12187:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34381,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34365,
+ "src": "12209:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34382,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34367,
+ "src": "12227:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34383,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34369,
+ "src": "12246:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34384,
+ "name": "issuedOn",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34371,
+ "src": "12264:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 34377,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42893,
+ "src": "12116:3:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 34378,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encode",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "12116:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 34385,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12116:166:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 34376,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42900,
+ "src": "12097:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 34386,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12097:193:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "functionReturnParameters": 34375,
+ "id": 34387,
+ "nodeType": "Return",
+ "src": "12084:206:96"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 34389,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getUniqueAttestationHash",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 34372,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 34363,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 34389,
+ "src": "11943:18:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 34362,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "11943:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34365,
+ "name": "issuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 34389,
+ "src": "11967:14:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 34364,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "11967:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34367,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 34389,
+ "src": "11987:15:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 34366,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "11987:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34369,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 34389,
+ "src": "12008:14:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 34368,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "12008:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34371,
+ "name": "issuedOn",
+ "nodeType": "VariableDeclaration",
+ "scope": 34389,
+ "src": "12028:15:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ "typeName": {
+ "id": 34370,
+ "name": "uint64",
+ "nodeType": "ElementaryTypeName",
+ "src": "12028:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "11937:110:96"
+ },
+ "returnParameters": {
+ "id": 34375,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 34374,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 34389,
+ "src": "12069:7:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 34373,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "12069:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "12068:9:96"
+ },
+ "scope": 34897,
+ "src": "11904:391:96",
+ "stateMutability": "pure",
+ "superFunction": 36152,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 34423,
+ "nodeType": "Block",
+ "src": "12450:444:96",
+ "statements": [
+ {
+ "assignments": [
+ 34393
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34393,
+ "name": "chainId",
+ "nodeType": "VariableDeclaration",
+ "scope": 34423,
+ "src": "12456:15:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 34392,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12456:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34394,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "12456:15:96"
+ },
+ {
+ "externalReferences": [
+ {
+ "chainId": {
+ "declaration": 34393,
+ "isOffset": false,
+ "isSlot": false,
+ "src": "12494:7:96",
+ "valueSize": 1
+ }
+ }
+ ],
+ "id": 34395,
+ "nodeType": "InlineAssembly",
+ "operations": "{ chainId := chainid() }",
+ "src": "12477:41:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34417,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34396,
+ "name": "eip712DomainSeparator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33774,
+ "src": "12524:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
+ "id": 34401,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "12606:84:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
+ "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
+ },
+ "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
+ "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
+ }
+ ],
+ "id": 34400,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42900,
+ "src": "12585:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 34402,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12585:115:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "4665646572617465644174746573746174696f6e73",
+ "id": 34405,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "12726:23:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_96f361fc4a5274cd642d269ced6f361149b691a1e8bf7016d8bdfe6cae9adc75",
+ "typeString": "literal_string \"FederatedAttestations\""
+ },
+ "value": "FederatedAttestations"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_96f361fc4a5274cd642d269ced6f361149b691a1e8bf7016d8bdfe6cae9adc75",
+ "typeString": "literal_string \"FederatedAttestations\""
+ }
+ ],
+ "id": 34404,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "12720:5:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
+ "typeString": "type(bytes storage pointer)"
+ },
+ "typeName": "bytes"
+ },
+ "id": 34406,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12720:30:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 34403,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42900,
+ "src": "12710:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 34407,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12710:41:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "312e30",
+ "id": 34409,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "12771:5:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_e6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3",
+ "typeString": "literal_string \"1.0\""
+ },
+ "value": "1.0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_e6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3",
+ "typeString": "literal_string \"1.0\""
+ }
+ ],
+ "id": 34408,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42900,
+ "src": "12761:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 34410,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12761:16:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34411,
+ "name": "chainId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34393,
+ "src": "12787:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34413,
+ "name": "this",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43128,
+ "src": "12812:4:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_FederatedAttestations_$34897",
+ "typeString": "contract FederatedAttestations"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_contract$_FederatedAttestations_$34897",
+ "typeString": "contract FederatedAttestations"
+ }
+ ],
+ "id": 34412,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "12804:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 34414,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12804:13:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 34398,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42893,
+ "src": "12565:3:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 34399,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encode",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "12565:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 34415,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12565:260:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 34397,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42900,
+ "src": "12548:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 34416,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12548:283:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "12524:307:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "id": 34418,
+ "nodeType": "ExpressionStatement",
+ "src": "12524:307:96"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34420,
+ "name": "eip712DomainSeparator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33774,
+ "src": "12867:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "id": 34419,
+ "name": "EIP712DomainSeparatorSet",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33793,
+ "src": "12842:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
+ "typeString": "function (bytes32)"
+ }
+ },
+ "id": 34421,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12842:47:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 34422,
+ "nodeType": "EmitStatement",
+ "src": "12837:52:96"
+ }
+ ]
+ },
+ "documentation": "@notice Sets the EIP712 domain separator for the Celo FederatedAttestations abstraction.",
+ "id": 34424,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "setEip712DomainSeparator",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 34390,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "12438:2:96"
+ },
+ "returnParameters": {
+ "id": 34391,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "12450:0:96"
+ },
+ "scope": 34897,
+ "src": "12405:489:96",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 34498,
+ "nodeType": "Block",
+ "src": "13533:478:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34439,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34437,
+ "name": "totalAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34432,
+ "src": "13539:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 34438,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "13559:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "13539:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34440,
+ "nodeType": "ExpressionStatement",
+ "src": "13539:21:96"
+ },
+ {
+ "assignments": [
+ 34442
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34442,
+ "name": "numAttestationsForIssuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 34498,
+ "src": "13566:32:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 34441,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "13566:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34443,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "13566:32:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34451,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34444,
+ "name": "countsPerIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34435,
+ "src": "13604:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 34448,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34429,
+ "src": "13636:14:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "id": 34449,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "13636:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 34447,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "NewExpression",
+ "src": "13622:13:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
+ "typeString": "function (uint256) pure returns (uint256[] memory)"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34445,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "13626:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34446,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "13626:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ }
+ },
+ "id": 34450,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13622:36:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "src": "13604:54:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "id": 34452,
+ "nodeType": "ExpressionStatement",
+ "src": "13604:54:96"
+ },
+ {
+ "body": {
+ "id": 34492,
+ "nodeType": "Block",
+ "src": "13726:232:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34477,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34468,
+ "name": "numAttestationsForIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34442,
+ "src": "13734:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34469,
+ "name": "identifierToAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33761,
+ "src": "13761:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))"
+ }
+ },
+ "id": 34471,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34470,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34426,
+ "src": "13786:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "13761:36:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$",
+ "typeString": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)"
+ }
+ },
+ "id": 34475,
+ "indexExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34472,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34429,
+ "src": "13798:14:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "id": 34474,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34473,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34454,
+ "src": "13813:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "13798:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "13761:55:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref"
+ }
+ },
+ "id": 34476,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "13761:62:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "13734:89:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34478,
+ "nodeType": "ExpressionStatement",
+ "src": "13734:89:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34484,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34479,
+ "name": "totalAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34432,
+ "src": "13831:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34482,
+ "name": "numAttestationsForIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34442,
+ "src": "13873:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 34480,
+ "name": "totalAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34432,
+ "src": "13851:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34481,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "13851:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 34483,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13851:47:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "13831:67:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34485,
+ "nodeType": "ExpressionStatement",
+ "src": "13831:67:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34490,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34486,
+ "name": "countsPerIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34435,
+ "src": "13906:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "id": 34488,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34487,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34454,
+ "src": "13922:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "13906:18:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 34489,
+ "name": "numAttestationsForIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34442,
+ "src": "13927:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "13906:45:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34491,
+ "nodeType": "ExpressionStatement",
+ "src": "13906:45:96"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 34460,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 34457,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34454,
+ "src": "13685:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 34458,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34429,
+ "src": "13689:14:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "id": 34459,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "13689:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "13685:25:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 34493,
+ "initializationExpression": {
+ "assignments": [
+ 34454
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34454,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 34493,
+ "src": "13670:9:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 34453,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "13670:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34456,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 34455,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "13682:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "13670:13:96"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34466,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34461,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34454,
+ "src": "13712:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 34464,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "13722:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 34462,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34454,
+ "src": "13716:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34463,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "13716:5:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 34465,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13716:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "13712:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34467,
+ "nodeType": "ExpressionStatement",
+ "src": "13712:12:96"
+ },
+ "nodeType": "ForStatement",
+ "src": "13665:293:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 34494,
+ "name": "totalAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34432,
+ "src": "13971:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34495,
+ "name": "countsPerIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34435,
+ "src": "13990:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ }
+ ],
+ "id": 34496,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "13970:36:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$",
+ "typeString": "tuple(uint256,uint256[] memory)"
+ }
+ },
+ "functionReturnParameters": 34436,
+ "id": 34497,
+ "nodeType": "Return",
+ "src": "13963:43:96"
+ }
+ ]
+ },
+ "documentation": "@notice Helper function for lookupAttestations to calculate the\ntotal number of attestations completed for an identifier\nby each trusted issuer\n@param identifier Hash of the identifier\n@param trustedIssuers Array of n issuers whose attestations will be included\n@return totalAttestations Sum total of attestations found\n@return countsPerIssuer Array of number of attestations found per issuer",
+ "id": 34499,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getNumAttestations",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 34430,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 34426,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 34499,
+ "src": "13382:18:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 34425,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "13382:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34429,
+ "name": "trustedIssuers",
+ "nodeType": "VariableDeclaration",
+ "scope": 34499,
+ "src": "13402:31:96",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34427,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "13402:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 34428,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "13402:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "13381:53:96"
+ },
+ "returnParameters": {
+ "id": 34436,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 34432,
+ "name": "totalAttestations",
+ "nodeType": "VariableDeclaration",
+ "scope": 34499,
+ "src": "13470:25:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 34431,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "13470:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34435,
+ "name": "countsPerIssuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 34499,
+ "src": "13497:32:96",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34433,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "13497:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34434,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "13497:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "13469:61:96"
+ },
+ "scope": 34897,
+ "src": "13354:657:96",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 34573,
+ "nodeType": "Block",
+ "src": "14636:463:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34514,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34512,
+ "name": "totalIdentifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34507,
+ "src": "14642:16:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 34513,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "14661:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "14642:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34515,
+ "nodeType": "ExpressionStatement",
+ "src": "14642:20:96"
+ },
+ {
+ "assignments": [
+ 34517
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34517,
+ "name": "numIdentifiersForIssuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 34573,
+ "src": "14668:31:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 34516,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "14668:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34518,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "14668:31:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34526,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34519,
+ "name": "countsPerIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34510,
+ "src": "14705:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 34523,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34504,
+ "src": "14737:14:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "id": 34524,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "14737:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 34522,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "NewExpression",
+ "src": "14723:13:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
+ "typeString": "function (uint256) pure returns (uint256[] memory)"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34520,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "14727:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34521,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "14727:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ }
+ },
+ "id": 34525,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14723:36:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "src": "14705:54:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "id": 34527,
+ "nodeType": "ExpressionStatement",
+ "src": "14705:54:96"
+ },
+ {
+ "body": {
+ "id": 34567,
+ "nodeType": "Block",
+ "src": "14827:220:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34552,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34543,
+ "name": "numIdentifiersForIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34517,
+ "src": "14835:23:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34544,
+ "name": "addressToIdentifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33768,
+ "src": "14861:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$_$",
+ "typeString": "mapping(address => mapping(address => bytes32[] storage ref))"
+ }
+ },
+ "id": 34546,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34545,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34501,
+ "src": "14882:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "14861:29:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$",
+ "typeString": "mapping(address => bytes32[] storage ref)"
+ }
+ },
+ "id": 34550,
+ "indexExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34547,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34504,
+ "src": "14891:14:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "id": 34549,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34548,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34529,
+ "src": "14906:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "14891:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "14861:48:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
+ "typeString": "bytes32[] storage ref"
+ }
+ },
+ "id": 34551,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "14861:55:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "14835:81:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34553,
+ "nodeType": "ExpressionStatement",
+ "src": "14835:81:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34559,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34554,
+ "name": "totalIdentifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34507,
+ "src": "14924:16:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34557,
+ "name": "numIdentifiersForIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34517,
+ "src": "14964:23:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 34555,
+ "name": "totalIdentifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34507,
+ "src": "14943:16:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34556,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "14943:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 34558,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14943:45:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "14924:64:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34560,
+ "nodeType": "ExpressionStatement",
+ "src": "14924:64:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34565,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34561,
+ "name": "countsPerIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34510,
+ "src": "14996:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ },
+ "id": 34563,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34562,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34529,
+ "src": "15012:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "14996:18:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 34564,
+ "name": "numIdentifiersForIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34517,
+ "src": "15017:23:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "14996:44:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34566,
+ "nodeType": "ExpressionStatement",
+ "src": "14996:44:96"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 34535,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 34532,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34529,
+ "src": "14786:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 34533,
+ "name": "trustedIssuers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34504,
+ "src": "14790:14:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[] memory"
+ }
+ },
+ "id": 34534,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "14790:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "14786:25:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 34568,
+ "initializationExpression": {
+ "assignments": [
+ 34529
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34529,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 34568,
+ "src": "14771:9:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 34528,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "14771:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34531,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 34530,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "14783:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "14771:13:96"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34541,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34536,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34529,
+ "src": "14813:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 34539,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "14823:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 34537,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34529,
+ "src": "14817:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34538,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "14817:5:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 34540,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14817:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "14813:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34542,
+ "nodeType": "ExpressionStatement",
+ "src": "14813:12:96"
+ },
+ "nodeType": "ForStatement",
+ "src": "14766:281:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 34569,
+ "name": "totalIdentifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34507,
+ "src": "15060:16:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34570,
+ "name": "countsPerIssuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34510,
+ "src": "15078:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[] memory"
+ }
+ }
+ ],
+ "id": 34571,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "15059:35:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$",
+ "typeString": "tuple(uint256,uint256[] memory)"
+ }
+ },
+ "functionReturnParameters": 34511,
+ "id": 34572,
+ "nodeType": "Return",
+ "src": "15052:42:96"
+ }
+ ]
+ },
+ "documentation": "@notice Helper function for lookupIdentifiers to calculate the\ntotal number of identifiers completed for an identifier\nby each trusted issuer\n@param account Address of the account\n@param trustedIssuers Array of n issuers whose identifiers will be included\n@return totalIdentifiers Sum total of identifiers found\n@return countsPerIssuer Array of number of identifiers found per issuer",
+ "id": 34574,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getNumIdentifiers",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 34505,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 34501,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 34574,
+ "src": "14489:15:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 34500,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "14489:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34504,
+ "name": "trustedIssuers",
+ "nodeType": "VariableDeclaration",
+ "scope": 34574,
+ "src": "14506:31:96",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34502,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "14506:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 34503,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "14506:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "14488:50:96"
+ },
+ "returnParameters": {
+ "id": 34511,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 34507,
+ "name": "totalIdentifiers",
+ "nodeType": "VariableDeclaration",
+ "scope": 34574,
+ "src": "14574:24:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 34506,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "14574:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34510,
+ "name": "countsPerIssuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 34574,
+ "src": "14600:32:96",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34508,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "14600:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34509,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "14600:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "14573:60:96"
+ },
+ "scope": 34897,
+ "src": "14462:637:96",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 34708,
+ "nodeType": "Block",
+ "src": "15632:1427:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34597,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "UnaryOperation",
+ "operator": "!",
+ "prefix": true,
+ "src": "15653:93:96",
+ "subExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34588,
+ "name": "revokedAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33772,
+ "src": "15654:19:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
+ "typeString": "mapping(bytes32 => bool)"
+ }
+ },
+ "id": 34596,
+ "indexExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34590,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34576,
+ "src": "15699:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34591,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34578,
+ "src": "15711:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34592,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34580,
+ "src": "15719:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34593,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34582,
+ "src": "15728:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34594,
+ "name": "issuedOn",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34584,
+ "src": "15736:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ ],
+ "id": 34589,
+ "name": "getUniqueAttestationHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34389,
+ "src": "15674:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint64_$returns$_t_bytes32_$",
+ "typeString": "function (bytes32,address,address,address,uint64) pure returns (bytes32)"
+ }
+ },
+ "id": 34595,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15674:71:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "15654:92:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4174746573746174696f6e20686173206265656e207265766f6b6564",
+ "id": 34598,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "15754:30:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_44f88d8320cc2eb6fc0a10c7fdc0e853ee997ceceb4e650d95a5d5f909ffd909",
+ "typeString": "literal_string \"Attestation has been revoked\""
+ },
+ "value": "Attestation has been revoked"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_44f88d8320cc2eb6fc0a10c7fdc0e853ee997ceceb4e650d95a5d5f909ffd909",
+ "typeString": "literal_string \"Attestation has been revoked\""
+ }
+ ],
+ "id": 34587,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "15638:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 34599,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15638:152:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 34600,
+ "nodeType": "ExpressionStatement",
+ "src": "15638:152:96"
+ },
+ {
+ "assignments": [
+ 34602
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34602,
+ "name": "numExistingAttestations",
+ "nodeType": "VariableDeclaration",
+ "scope": 34708,
+ "src": "15796:31:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 34601,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "15796:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34609,
+ "initialValue": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34603,
+ "name": "identifierToAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33761,
+ "src": "15830:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))"
+ }
+ },
+ "id": 34605,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34604,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34576,
+ "src": "15855:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "15830:36:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$",
+ "typeString": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)"
+ }
+ },
+ "id": 34607,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34606,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34578,
+ "src": "15867:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "15830:44:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref"
+ }
+ },
+ "id": 34608,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "15830:51:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "15796:85:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 34616,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 34613,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "15930:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 34611,
+ "name": "numExistingAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34602,
+ "src": "15902:23:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34612,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "15902:27:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 34614,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15902:30:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 34615,
+ "name": "MAX_ATTESTATIONS_PER_IDENTIFIER",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33786,
+ "src": "15936:31:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "15902:65:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4d6178206174746573746174696f6e7320616c7265616479207265676973746572656420666f72206964656e746966696572",
+ "id": 34617,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "15975:52:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_7c7eae4e20b6b7543cee7633ce45af90bce3bf94c048d8e4118ccddc4d23d23d",
+ "typeString": "literal_string \"Max attestations already registered for identifier\""
+ },
+ "value": "Max attestations already registered for identifier"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_7c7eae4e20b6b7543cee7633ce45af90bce3bf94c048d8e4118ccddc4d23d23d",
+ "typeString": "literal_string \"Max attestations already registered for identifier\""
+ }
+ ],
+ "id": 34610,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "15887:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 34618,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15887:146:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 34619,
+ "nodeType": "ExpressionStatement",
+ "src": "15887:146:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 34631,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 34628,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "16103:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34621,
+ "name": "addressToIdentifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33768,
+ "src": "16054:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$_$",
+ "typeString": "mapping(address => mapping(address => bytes32[] storage ref))"
+ }
+ },
+ "id": 34623,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34622,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34580,
+ "src": "16075:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "16054:29:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$",
+ "typeString": "mapping(address => bytes32[] storage ref)"
+ }
+ },
+ "id": 34625,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34624,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34578,
+ "src": "16084:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "16054:37:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
+ "typeString": "bytes32[] storage ref"
+ }
+ },
+ "id": 34626,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "16054:44:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34627,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "16054:48:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 34629,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16054:51:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 34630,
+ "name": "MAX_IDENTIFIERS_PER_ADDRESS",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33789,
+ "src": "16109:27:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "16054:82:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4d6178206964656e7469666965727320616c7265616479207265676973746572656420666f72206163636f756e74",
+ "id": 34632,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "16144:48:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_460e11b5170ac3dbe9a90b55d8ff165b7b027f1f0b8b497713a2819ac317a4fa",
+ "typeString": "literal_string \"Max identifiers already registered for account\""
+ },
+ "value": "Max identifiers already registered for account"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_460e11b5170ac3dbe9a90b55d8ff165b7b027f1f0b8b497713a2819ac317a4fa",
+ "typeString": "literal_string \"Max identifiers already registered for account\""
+ }
+ ],
+ "id": 34620,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "16039:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 34633,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16039:159:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 34634,
+ "nodeType": "ExpressionStatement",
+ "src": "16039:159:96"
+ },
+ {
+ "body": {
+ "id": 34663,
+ "nodeType": "Block",
+ "src": "16268:379:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 34659,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34650,
+ "name": "identifierToAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33761,
+ "src": "16511:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))"
+ }
+ },
+ "id": 34652,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34651,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34576,
+ "src": "16536:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "16511:36:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$",
+ "typeString": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)"
+ }
+ },
+ "id": 34654,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34653,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34578,
+ "src": "16548:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "16511:44:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref"
+ }
+ },
+ "id": 34656,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34655,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34636,
+ "src": "16556:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "16511:47:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref"
+ }
+ },
+ "id": 34657,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "account",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 33747,
+ "src": "16511:55:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 34658,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34580,
+ "src": "16570:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "16511:66:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4174746573746174696f6e20666f722074686973206163636f756e7420616c726561647920657869737473",
+ "id": 34660,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "16587:45:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3ac76dafbb16c10f61396b165399ccb352ce53f1e5de303a5f9df7f1c53d8585",
+ "typeString": "literal_string \"Attestation for this account already exists\""
+ },
+ "value": "Attestation for this account already exists"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3ac76dafbb16c10f61396b165399ccb352ce53f1e5de303a5f9df7f1c53d8585",
+ "typeString": "literal_string \"Attestation for this account already exists\""
+ }
+ ],
+ "id": 34649,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "src": "16494:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 34661,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16494:146:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 34662,
+ "nodeType": "ExpressionStatement",
+ "src": "16494:146:96"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 34641,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 34639,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34636,
+ "src": "16225:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 34640,
+ "name": "numExistingAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34602,
+ "src": "16229:23:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "16225:27:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 34664,
+ "initializationExpression": {
+ "assignments": [
+ 34636
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34636,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 34664,
+ "src": "16210:9:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 34635,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "16210:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34638,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 34637,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "16222:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "16210:13:96"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34647,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34642,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34636,
+ "src": "16254:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 34645,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "16264:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 34643,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34636,
+ "src": "16258:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34644,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "16258:5:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 34646,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16258:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "16254:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34648,
+ "nodeType": "ExpressionStatement",
+ "src": "16254:12:96"
+ },
+ "nodeType": "ForStatement",
+ "src": "16205:442:96"
+ },
+ {
+ "assignments": [
+ 34666
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34666,
+ "name": "publishedOn",
+ "nodeType": "VariableDeclaration",
+ "scope": 34708,
+ "src": "16652:18:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ "typeName": {
+ "id": 34665,
+ "name": "uint64",
+ "nodeType": "ElementaryTypeName",
+ "src": "16652:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34671,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 34668,
+ "name": "block",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42896,
+ "src": "16680:5:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_block",
+ "typeString": "block"
+ }
+ },
+ "id": 34669,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "timestamp",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "16680:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 34667,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "16673:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_uint64_$",
+ "typeString": "type(uint64)"
+ },
+ "typeName": "uint64"
+ },
+ "id": 34670,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16673:23:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "16652:44:96"
+ },
+ {
+ "assignments": [
+ 34673
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34673,
+ "name": "attestation",
+ "nodeType": "VariableDeclaration",
+ "scope": 34708,
+ "src": "16702:39:96",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 34672,
+ "name": "OwnershipAttestation",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 33754,
+ "src": "16702:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34680,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34675,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34580,
+ "src": "16772:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34676,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34582,
+ "src": "16787:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34677,
+ "name": "issuedOn",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34584,
+ "src": "16801:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34678,
+ "name": "publishedOn",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34666,
+ "src": "16817:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ ],
+ "id": 34674,
+ "name": "OwnershipAttestation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33754,
+ "src": "16744:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_struct$_OwnershipAttestation_$33754_storage_ptr_$",
+ "typeString": "type(struct FederatedAttestations.OwnershipAttestation storage pointer)"
+ }
+ },
+ "id": 34679,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "structConstructorCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16744:90:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation memory"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "16702:132:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34687,
+ "name": "attestation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34673,
+ "src": "16890:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation memory"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34681,
+ "name": "identifierToAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33761,
+ "src": "16840:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))"
+ }
+ },
+ "id": 34684,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34682,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34576,
+ "src": "16865:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "16840:36:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$",
+ "typeString": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)"
+ }
+ },
+ "id": 34685,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34683,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34578,
+ "src": "16877:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "16840:44:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref"
+ }
+ },
+ "id": 34686,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "push",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "16840:49:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_OwnershipAttestation_$33754_storage_$returns$_t_uint256_$",
+ "typeString": "function (struct FederatedAttestations.OwnershipAttestation storage ref) returns (uint256)"
+ }
+ },
+ "id": 34688,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16840:62:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34689,
+ "nodeType": "ExpressionStatement",
+ "src": "16840:62:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34696,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34576,
+ "src": "16951:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34690,
+ "name": "addressToIdentifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33768,
+ "src": "16908:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$_$",
+ "typeString": "mapping(address => mapping(address => bytes32[] storage ref))"
+ }
+ },
+ "id": 34693,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34691,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34580,
+ "src": "16929:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "16908:29:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$",
+ "typeString": "mapping(address => bytes32[] storage ref)"
+ }
+ },
+ "id": 34694,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34692,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34578,
+ "src": "16938:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "16908:37:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
+ "typeString": "bytes32[] storage ref"
+ }
+ },
+ "id": 34695,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "push",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "16908:42:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$_t_uint256_$",
+ "typeString": "function (bytes32) returns (uint256)"
+ }
+ },
+ "id": 34697,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16908:54:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34698,
+ "nodeType": "ExpressionStatement",
+ "src": "16908:54:96"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34700,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34576,
+ "src": "16995:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34701,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34578,
+ "src": "17007:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34702,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34580,
+ "src": "17015:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34703,
+ "name": "signer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34582,
+ "src": "17024:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34704,
+ "name": "issuedOn",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34584,
+ "src": "17032:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34705,
+ "name": "publishedOn",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34666,
+ "src": "17042:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ ],
+ "id": 34699,
+ "name": "AttestationRegistered",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33807,
+ "src": "16973:21:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint64_$_t_uint64_$returns$__$",
+ "typeString": "function (bytes32,address,address,address,uint64,uint64)"
+ }
+ },
+ "id": 34706,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16973:81:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 34707,
+ "nodeType": "EmitStatement",
+ "src": "16968:86:96"
+ }
+ ]
+ },
+ "documentation": "@notice Registers an attestation\n@param identifier Hash of the identifier to be attested\n@param issuer Address of the attestation issuer\n@param account Address of the account being mapped to the identifier\n@param issuedOn Time at which the issuer issued the attestation in Unix time \n@param signer Address of the signer of the attestation",
+ "id": 34709,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "_registerAttestation",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 34585,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 34576,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 34709,
+ "src": "15519:18:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 34575,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "15519:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34578,
+ "name": "issuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 34709,
+ "src": "15543:14:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 34577,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "15543:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34580,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 34709,
+ "src": "15563:15:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 34579,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "15563:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34582,
+ "name": "signer",
+ "nodeType": "VariableDeclaration",
+ "scope": 34709,
+ "src": "15584:14:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 34581,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "15584:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34584,
+ "name": "issuedOn",
+ "nodeType": "VariableDeclaration",
+ "scope": 34709,
+ "src": "15604:15:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ "typeName": {
+ "id": 34583,
+ "name": "uint64",
+ "nodeType": "ElementaryTypeName",
+ "src": "15604:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "15513:110:96"
+ },
+ "returnParameters": {
+ "id": 34586,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "15632:0:96"
+ },
+ "scope": 34897,
+ "src": "15484:1575:96",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "private"
+ },
+ {
+ "body": {
+ "id": 34895,
+ "nodeType": "Block",
+ "src": "17531:1776:96",
+ "statements": [
+ {
+ "assignments": [
+ 34721
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34721,
+ "name": "attestations",
+ "nodeType": "VariableDeclaration",
+ "scope": 34895,
+ "src": "17537:43:96",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation[]"
+ },
+ "typeName": {
+ "baseType": {
+ "contractScope": null,
+ "id": 34719,
+ "name": "OwnershipAttestation",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 33754,
+ "src": "17537:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation"
+ }
+ },
+ "id": 34720,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "17537:22:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34727,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34722,
+ "name": "identifierToAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33761,
+ "src": "17583:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$_$",
+ "typeString": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))"
+ }
+ },
+ "id": 34724,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34723,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34711,
+ "src": "17608:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "17583:36:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_$",
+ "typeString": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)"
+ }
+ },
+ "id": 34726,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34725,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34713,
+ "src": "17620:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "17583:44:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "17537:90:96"
+ },
+ {
+ "assignments": [
+ 34729
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34729,
+ "name": "lenAttestations",
+ "nodeType": "VariableDeclaration",
+ "scope": 34895,
+ "src": "17633:23:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 34728,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "17633:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34732,
+ "initialValue": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 34730,
+ "name": "attestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34721,
+ "src": "17659:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer"
+ }
+ },
+ "id": 34731,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "17659:19:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "17633:45:96"
+ },
+ {
+ "body": {
+ "id": 34889,
+ "nodeType": "Block",
+ "src": "17739:1508:96",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 34752,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34747,
+ "name": "attestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34721,
+ "src": "17751:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer"
+ }
+ },
+ "id": 34749,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34748,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34734,
+ "src": "17764:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "17751:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref"
+ }
+ },
+ "id": 34750,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "account",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 33747,
+ "src": "17751:23:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 34751,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34715,
+ "src": "17778:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "17751:34:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 34755,
+ "nodeType": "IfStatement",
+ "src": "17747:67:96",
+ "trueBody": {
+ "id": 34754,
+ "nodeType": "Block",
+ "src": "17787:27:96",
+ "statements": [
+ {
+ "id": 34753,
+ "nodeType": "Continue",
+ "src": "17797:8:96"
+ }
+ ]
+ }
+ },
+ {
+ "assignments": [
+ 34757
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34757,
+ "name": "attestation",
+ "nodeType": "VariableDeclaration",
+ "scope": 34889,
+ "src": "17822:39:96",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 34756,
+ "name": "OwnershipAttestation",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 33754,
+ "src": "17822:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34761,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34758,
+ "name": "attestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34721,
+ "src": "17864:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer"
+ }
+ },
+ "id": 34760,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34759,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34734,
+ "src": "17877:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "17864:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "17822:57:96"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 34766,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 34762,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34734,
+ "src": "18080:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 34765,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 34763,
+ "name": "lenAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34729,
+ "src": "18085:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "-",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 34764,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "18103:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "src": "18085:19:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "18080:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 34778,
+ "nodeType": "IfStatement",
+ "src": "18076:100:96",
+ "trueBody": {
+ "id": 34777,
+ "nodeType": "Block",
+ "src": "18106:70:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34775,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34767,
+ "name": "attestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34721,
+ "src": "18116:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer"
+ }
+ },
+ "id": 34769,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34768,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34734,
+ "src": "18129:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "18116:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34770,
+ "name": "attestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34721,
+ "src": "18134:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer"
+ }
+ },
+ "id": 34774,
+ "indexExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 34773,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 34771,
+ "name": "lenAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34729,
+ "src": "18147:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "-",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 34772,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "18165:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "src": "18147:19:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "18134:33:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref"
+ }
+ },
+ "src": "18116:51:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_storage",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref"
+ }
+ },
+ "id": 34776,
+ "nodeType": "ExpressionStatement",
+ "src": "18116:51:96"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "id": 34779,
+ "name": "attestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34721,
+ "src": "18183:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_struct$_OwnershipAttestation_$33754_storage_$dyn_storage_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer"
+ }
+ },
+ "id": 34781,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "pop",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "18183:16:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
+ "typeString": "function ()"
+ }
+ },
+ "id": 34782,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18183:18:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 34783,
+ "nodeType": "ExpressionStatement",
+ "src": "18183:18:96"
+ },
+ {
+ "assignments": [
+ 34785
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34785,
+ "name": "deletedIdentifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 34889,
+ "src": "18210:22:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 34784,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "18210:4:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34787,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "66616c7365",
+ "id": 34786,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "18235:5:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "false"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "18210:30:96"
+ },
+ {
+ "assignments": [
+ 34791
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34791,
+ "name": "identifiers",
+ "nodeType": "VariableDeclaration",
+ "scope": 34889,
+ "src": "18248:29:96",
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
+ "typeString": "bytes32[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 34789,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "18248:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "id": 34790,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "18248:9:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
+ "typeString": "bytes32[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34797,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34792,
+ "name": "addressToIdentifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33768,
+ "src": "18280:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$_$",
+ "typeString": "mapping(address => mapping(address => bytes32[] storage ref))"
+ }
+ },
+ "id": 34794,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34793,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34715,
+ "src": "18301:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "18280:29:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_bytes32_$dyn_storage_$",
+ "typeString": "mapping(address => bytes32[] storage ref)"
+ }
+ },
+ "id": 34796,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34795,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34713,
+ "src": "18310:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "18280:37:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_storage",
+ "typeString": "bytes32[] storage ref"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "18248:69:96"
+ },
+ {
+ "assignments": [
+ 34799
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34799,
+ "name": "lenIdentifiers",
+ "nodeType": "VariableDeclaration",
+ "scope": 34889,
+ "src": "18325:22:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 34798,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "18325:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34802,
+ "initialValue": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 34800,
+ "name": "identifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34791,
+ "src": "18350:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
+ "typeString": "bytes32[] storage pointer"
+ }
+ },
+ "id": 34801,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "18350:18:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "18325:43:96"
+ },
+ {
+ "body": {
+ "id": 34852,
+ "nodeType": "Block",
+ "src": "18431:268:96",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 34821,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34817,
+ "name": "identifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34791,
+ "src": "18445:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
+ "typeString": "bytes32[] storage pointer"
+ }
+ },
+ "id": 34819,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34818,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34804,
+ "src": "18457:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "18445:14:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 34820,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34711,
+ "src": "18463:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "18445:28:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 34824,
+ "nodeType": "IfStatement",
+ "src": "18441:65:96",
+ "trueBody": {
+ "id": 34823,
+ "nodeType": "Block",
+ "src": "18475:31:96",
+ "statements": [
+ {
+ "id": 34822,
+ "nodeType": "Continue",
+ "src": "18487:8:96"
+ }
+ ]
+ }
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 34829,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 34825,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34804,
+ "src": "18519:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 34828,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 34826,
+ "name": "lenIdentifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34799,
+ "src": "18524:14:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "-",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 34827,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "18541:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "src": "18524:18:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "18519:23:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 34841,
+ "nodeType": "IfStatement",
+ "src": "18515:100:96",
+ "trueBody": {
+ "id": 34840,
+ "nodeType": "Block",
+ "src": "18544:71:96",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34838,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34830,
+ "name": "identifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34791,
+ "src": "18556:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
+ "typeString": "bytes32[] storage pointer"
+ }
+ },
+ "id": 34832,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34831,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34804,
+ "src": "18568:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "18556:14:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34833,
+ "name": "identifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34791,
+ "src": "18573:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
+ "typeString": "bytes32[] storage pointer"
+ }
+ },
+ "id": 34837,
+ "indexExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 34836,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 34834,
+ "name": "lenIdentifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34799,
+ "src": "18585:14:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "-",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 34835,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "18602:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ "src": "18585:18:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "18573:31:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "18556:48:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "id": 34839,
+ "nodeType": "ExpressionStatement",
+ "src": "18556:48:96"
+ }
+ ]
+ }
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "id": 34842,
+ "name": "identifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34791,
+ "src": "18624:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
+ "typeString": "bytes32[] storage pointer"
+ }
+ },
+ "id": 34844,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "pop",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "18624:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
+ "typeString": "function ()"
+ }
+ },
+ "id": 34845,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18624:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 34846,
+ "nodeType": "ExpressionStatement",
+ "src": "18624:17:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34849,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34847,
+ "name": "deletedIdentifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34785,
+ "src": "18651:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 34848,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "18671:4:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "src": "18651:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 34850,
+ "nodeType": "ExpressionStatement",
+ "src": "18651:24:96"
+ },
+ {
+ "id": 34851,
+ "nodeType": "Break",
+ "src": "18685:5:96"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 34809,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 34807,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34804,
+ "src": "18397:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 34808,
+ "name": "lenIdentifiers",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34799,
+ "src": "18401:14:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "18397:18:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 34853,
+ "initializationExpression": {
+ "assignments": [
+ 34804
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34804,
+ "name": "j",
+ "nodeType": "VariableDeclaration",
+ "scope": 34853,
+ "src": "18382:9:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 34803,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "18382:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34806,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 34805,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "18394:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "18382:13:96"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34815,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34810,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34804,
+ "src": "18417:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 34813,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "18427:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 34811,
+ "name": "j",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34804,
+ "src": "18421:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34812,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "18421:5:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 34814,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18421:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "18417:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34816,
+ "nodeType": "ExpressionStatement",
+ "src": "18417:12:96"
+ },
+ "nodeType": "ForStatement",
+ "src": "18377:322:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34855,
+ "name": "deletedIdentifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34785,
+ "src": "18795:17:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "id": 34854,
+ "name": "assert",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42895,
+ "src": "18788:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
+ "typeString": "function (bool) pure"
+ }
+ },
+ "id": 34856,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18788:25:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 34857,
+ "nodeType": "ExpressionStatement",
+ "src": "18788:25:96"
+ },
+ {
+ "assignments": [
+ 34859
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34859,
+ "name": "attestationHash",
+ "nodeType": "VariableDeclaration",
+ "scope": 34889,
+ "src": "18822:23:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 34858,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "18822:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34869,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34861,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34711,
+ "src": "18882:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34862,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34713,
+ "src": "18902:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34863,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34715,
+ "src": "18918:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 34864,
+ "name": "attestation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34757,
+ "src": "18935:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation memory"
+ }
+ },
+ "id": 34865,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signer",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 33749,
+ "src": "18935:18:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 34866,
+ "name": "attestation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34757,
+ "src": "18963:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation memory"
+ }
+ },
+ "id": 34867,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "issuedOn",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 33751,
+ "src": "18963:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ ],
+ "id": 34860,
+ "name": "getUniqueAttestationHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34389,
+ "src": "18848:24:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint64_$returns$_t_bytes32_$",
+ "typeString": "function (bytes32,address,address,address,uint64) pure returns (bytes32)"
+ }
+ },
+ "id": 34868,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18848:143:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "18822:169:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34874,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 34870,
+ "name": "revokedAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33772,
+ "src": "18999:19:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
+ "typeString": "mapping(bytes32 => bool)"
+ }
+ },
+ "id": 34872,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 34871,
+ "name": "attestationHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34859,
+ "src": "19019:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "18999:36:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 34873,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "19038:4:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "src": "18999:43:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 34875,
+ "nodeType": "ExpressionStatement",
+ "src": "18999:43:96"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 34877,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34711,
+ "src": "19084:10:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34878,
+ "name": "issuer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34713,
+ "src": "19104:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 34879,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34715,
+ "src": "19120:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 34880,
+ "name": "attestation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34757,
+ "src": "19137:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation memory"
+ }
+ },
+ "id": 34881,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "signer",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 33749,
+ "src": "19137:18:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 34882,
+ "name": "attestation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34757,
+ "src": "19165:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation memory"
+ }
+ },
+ "id": 34883,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "issuedOn",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 33751,
+ "src": "19165:20:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 34884,
+ "name": "attestation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34757,
+ "src": "19195:11:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation memory"
+ }
+ },
+ "id": 34885,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "publishedOn",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 33753,
+ "src": "19195:23:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ ],
+ "id": 34876,
+ "name": "AttestationRevoked",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 33821,
+ "src": "19056:18:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_uint64_$_t_uint64_$returns$__$",
+ "typeString": "function (bytes32,address,address,address,uint64,uint64)"
+ }
+ },
+ "id": 34886,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19056:170:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 34887,
+ "nodeType": "EmitStatement",
+ "src": "19051:175:96"
+ },
+ {
+ "expression": null,
+ "functionReturnParameters": 34717,
+ "id": 34888,
+ "nodeType": "Return",
+ "src": "19234:7:96"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 34739,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 34737,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34734,
+ "src": "17704:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 34738,
+ "name": "lenAttestations",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34729,
+ "src": "17708:15:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "17704:19:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 34890,
+ "initializationExpression": {
+ "assignments": [
+ 34734
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 34734,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 34890,
+ "src": "17689:9:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 34733,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "17689:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 34736,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 34735,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "17701:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "17689:13:96"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 34745,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 34740,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34734,
+ "src": "17725:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 34743,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "17735:1:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 34741,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 34734,
+ "src": "17729:1:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34742,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "17729:5:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 34744,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17729:8:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "17725:12:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 34746,
+ "nodeType": "ExpressionStatement",
+ "src": "17725:12:96"
+ },
+ "nodeType": "ForStatement",
+ "src": "17684:1563:96"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "4174746573746174696f6e20746f206265207265766f6b656420646f6573206e6f74206578697374",
+ "id": 34892,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "19259:42:96",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_bef54e0375bd2eecd9ac95b88792d3212418152ef73b8c0d6ef009ad5a6fb35f",
+ "typeString": "literal_string \"Attestation to be revoked does not exist\""
+ },
+ "value": "Attestation to be revoked does not exist"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_bef54e0375bd2eecd9ac95b88792d3212418152ef73b8c0d6ef009ad5a6fb35f",
+ "typeString": "literal_string \"Attestation to be revoked does not exist\""
+ }
+ ],
+ "id": 34891,
+ "name": "revert",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 42911,
+ 42912
+ ],
+ "referencedDeclaration": 42912,
+ "src": "19252:6:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (string memory) pure"
+ }
+ },
+ "id": 34893,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19252:50:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 34894,
+ "nodeType": "ExpressionStatement",
+ "src": "19252:50:96"
+ }
+ ]
+ },
+ "documentation": "@notice Revokes an attestation:\n helper function for revokeAttestation and batchRevokeAttestations\n@param identifier Hash of the identifier to be revoked\n@param issuer Address of the attestation issuer\n@param account Address of the account mapped to the identifier\n@dev Reverts if attestation is not found mapping identifier <-> account",
+ "id": 34896,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "_revokeAttestation",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 34716,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 34711,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 34896,
+ "src": "17470:18:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 34710,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "17470:7:96",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34713,
+ "name": "issuer",
+ "nodeType": "VariableDeclaration",
+ "scope": 34896,
+ "src": "17490:14:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 34712,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "17490:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 34715,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 34896,
+ "src": "17506:15:96",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 34714,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "17506:7:96",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "17469:53:96"
+ },
+ "returnParameters": {
+ "id": 34717,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "17531:0:96"
+ },
+ "scope": 34897,
+ "src": "17442:1865:96",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "private"
+ }
+ ],
+ "scope": 34898,
+ "src": "604:18705:96"
+ }
+ ],
+ "src": "0:19310:96"
+ },
+ "legacyAST": {
+ "attributes": {
+ "absolutePath": "project:/contracts/identity/FederatedAttestations.sol",
+ "exportedSymbols": {
+ "FederatedAttestations": [
+ 34897
+ ]
+ }
+ },
+ "children": [
+ {
+ "attributes": {
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".13"
+ ]
+ },
+ "id": 33719,
+ "name": "PragmaDirective",
+ "src": "0:24:96"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 364,
+ "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "scope": 34898,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 33720,
+ "name": "ImportDirective",
+ "src": "26:59:96"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 482,
+ "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "scope": 34898,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 33721,
+ "name": "ImportDirective",
+ "src": "86:63:96"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 956,
+ "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
+ "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
+ "scope": 34898,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 33722,
+ "name": "ImportDirective",
+ "src": "150:64:96"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 1359,
+ "absolutePath": "openzeppelin-solidity/contracts/utils/SafeCast.sol",
+ "file": "openzeppelin-solidity/contracts/utils/SafeCast.sol",
+ "scope": 34898,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 33723,
+ "name": "ImportDirective",
+ "src": "215:60:96"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 36154,
+ "absolutePath": "project:/contracts/identity/interfaces/IFederatedAttestations.sol",
+ "file": "./interfaces/IFederatedAttestations.sol",
+ "scope": 34898,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 33724,
+ "name": "ImportDirective",
+ "src": "277:49:96"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 9065,
+ "absolutePath": "project:/contracts/common/interfaces/IAccounts.sol",
+ "file": "../common/interfaces/IAccounts.sol",
+ "scope": 34898,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 33725,
+ "name": "ImportDirective",
+ "src": "327:44:96"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 9108,
+ "absolutePath": "project:/contracts/common/interfaces/ICeloVersionedContract.sol",
+ "file": "../common/interfaces/ICeloVersionedContract.sol",
+ "scope": 34898,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 33726,
+ "name": "ImportDirective",
+ "src": "372:57:96"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 5885,
+ "absolutePath": "project:/contracts/common/Initializable.sol",
+ "file": "../common/Initializable.sol",
+ "scope": 34898,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 33727,
+ "name": "ImportDirective",
+ "src": "431:37:96"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 8802,
+ "absolutePath": "project:/contracts/common/UsingRegistryV2.sol",
+ "file": "../common/UsingRegistryV2.sol",
+ "scope": 34898,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 33728,
+ "name": "ImportDirective",
+ "src": "469:39:96"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 6903,
+ "absolutePath": "project:/contracts/common/Signatures.sol",
+ "file": "../common/Signatures.sol",
+ "scope": 34898,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 33729,
+ "name": "ImportDirective",
+ "src": "509:34:96"
+ },
+ {
+ "attributes": {
+ "contractDependencies": [
+ 26,
+ 481,
+ 5884,
+ 8801,
+ 9107,
+ 36153
+ ],
+ "contractKind": "contract",
+ "documentation": "@title Contract mapping identifiers to accounts",
+ "fullyImplemented": true,
+ "linearizedBaseContracts": [
+ 34897,
+ 8801,
+ 5884,
+ 481,
+ 26,
+ 9107,
+ 36153
+ ],
+ "name": "FederatedAttestations",
+ "scope": 34898
+ },
+ "children": [
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "IFederatedAttestations",
+ "referencedDeclaration": 36153,
+ "type": "contract IFederatedAttestations"
+ },
+ "id": 33730,
+ "name": "UserDefinedTypeName",
+ "src": "640:22:96"
+ }
+ ],
+ "id": 33731,
+ "name": "InheritanceSpecifier",
+ "src": "640:22:96"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "ICeloVersionedContract",
+ "referencedDeclaration": 9107,
+ "type": "contract ICeloVersionedContract"
+ },
+ "id": 33732,
+ "name": "UserDefinedTypeName",
+ "src": "666:22:96"
+ }
+ ],
+ "id": 33733,
+ "name": "InheritanceSpecifier",
+ "src": "666:22:96"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "Ownable",
+ "referencedDeclaration": 481,
+ "type": "contract Ownable"
+ },
+ "id": 33734,
+ "name": "UserDefinedTypeName",
+ "src": "692:7:96"
+ }
+ ],
+ "id": 33735,
+ "name": "InheritanceSpecifier",
+ "src": "692:7:96"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "Initializable",
+ "referencedDeclaration": 5884,
+ "type": "contract Initializable"
+ },
+ "id": 33736,
+ "name": "UserDefinedTypeName",
+ "src": "703:13:96"
+ }
+ ],
+ "id": 33737,
+ "name": "InheritanceSpecifier",
+ "src": "703:13:96"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "UsingRegistryV2",
+ "referencedDeclaration": 8801,
+ "type": "contract UsingRegistryV2"
+ },
+ "id": 33738,
+ "name": "UserDefinedTypeName",
+ "src": "720:15:96"
+ }
+ ],
+ "id": 33739,
+ "name": "InheritanceSpecifier",
+ "src": "720:15:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "SafeMath",
+ "referencedDeclaration": 363,
+ "type": "library SafeMath"
+ },
+ "id": 33740,
+ "name": "UserDefinedTypeName",
+ "src": "746:8:96"
+ },
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 33741,
+ "name": "ElementaryTypeName",
+ "src": "759:7:96"
+ }
+ ],
+ "id": 33742,
+ "name": "UsingForDirective",
+ "src": "740:27:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "SafeCast",
+ "referencedDeclaration": 1358,
+ "type": "library SafeCast"
+ },
+ "id": 33743,
+ "name": "UserDefinedTypeName",
+ "src": "776:8:96"
+ },
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 33744,
+ "name": "ElementaryTypeName",
+ "src": "789:7:96"
+ }
+ ],
+ "id": 33745,
+ "name": "UsingForDirective",
+ "src": "770:27:96"
+ },
+ {
+ "attributes": {
+ "canonicalName": "FederatedAttestations.OwnershipAttestation",
+ "name": "OwnershipAttestation",
+ "scope": 34897,
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "account",
+ "scope": 33754,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33746,
+ "name": "ElementaryTypeName",
+ "src": "835:7:96"
+ }
+ ],
+ "id": 33747,
+ "name": "VariableDeclaration",
+ "src": "835:15:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "signer",
+ "scope": 33754,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33748,
+ "name": "ElementaryTypeName",
+ "src": "856:7:96"
+ }
+ ],
+ "id": 33749,
+ "name": "VariableDeclaration",
+ "src": "856:14:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "issuedOn",
+ "scope": 33754,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint64",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint64",
+ "type": "uint64"
+ },
+ "id": 33750,
+ "name": "ElementaryTypeName",
+ "src": "876:6:96"
+ }
+ ],
+ "id": 33751,
+ "name": "VariableDeclaration",
+ "src": "876:15:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "publishedOn",
+ "scope": 33754,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint64",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint64",
+ "type": "uint64"
+ },
+ "id": 33752,
+ "name": "ElementaryTypeName",
+ "src": "897:6:96"
+ }
+ ],
+ "id": 33753,
+ "name": "VariableDeclaration",
+ "src": "897:18:96"
+ }
+ ],
+ "id": 33754,
+ "name": "StructDefinition",
+ "src": "801:182:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifierToAttestations",
+ "scope": 34897,
+ "stateVariable": true,
+ "storageLocation": "default",
+ "type": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation[]))",
+ "value": null,
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "attributes": {
+ "type": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation[]))"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 33755,
+ "name": "ElementaryTypeName",
+ "src": "1343:7:96"
+ },
+ {
+ "attributes": {
+ "type": "mapping(address => struct FederatedAttestations.OwnershipAttestation[])"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "type": "address"
+ },
+ "id": 33756,
+ "name": "ElementaryTypeName",
+ "src": "1362:7:96"
+ },
+ {
+ "attributes": {
+ "length": null,
+ "type": "struct FederatedAttestations.OwnershipAttestation[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "OwnershipAttestation",
+ "referencedDeclaration": 33754,
+ "type": "struct FederatedAttestations.OwnershipAttestation"
+ },
+ "id": 33757,
+ "name": "UserDefinedTypeName",
+ "src": "1373:20:96"
+ }
+ ],
+ "id": 33758,
+ "name": "ArrayTypeName",
+ "src": "1373:22:96"
+ }
+ ],
+ "id": 33759,
+ "name": "Mapping",
+ "src": "1354:42:96"
+ }
+ ],
+ "id": 33760,
+ "name": "Mapping",
+ "src": "1335:62:96"
+ }
+ ],
+ "id": 33761,
+ "name": "VariableDeclaration",
+ "src": "1335:94:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "addressToIdentifiers",
+ "scope": 34897,
+ "stateVariable": true,
+ "storageLocation": "default",
+ "type": "mapping(address => mapping(address => bytes32[]))",
+ "value": null,
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "attributes": {
+ "type": "mapping(address => mapping(address => bytes32[]))"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "type": "address"
+ },
+ "id": 33762,
+ "name": "ElementaryTypeName",
+ "src": "1479:7:96"
+ },
+ {
+ "attributes": {
+ "type": "mapping(address => bytes32[])"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "type": "address"
+ },
+ "id": 33763,
+ "name": "ElementaryTypeName",
+ "src": "1498:7:96"
+ },
+ {
+ "attributes": {
+ "length": null,
+ "type": "bytes32[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 33764,
+ "name": "ElementaryTypeName",
+ "src": "1509:7:96"
+ }
+ ],
+ "id": 33765,
+ "name": "ArrayTypeName",
+ "src": "1509:9:96"
+ }
+ ],
+ "id": 33766,
+ "name": "Mapping",
+ "src": "1490:29:96"
+ }
+ ],
+ "id": 33767,
+ "name": "Mapping",
+ "src": "1471:49:96"
+ }
+ ],
+ "id": 33768,
+ "name": "VariableDeclaration",
+ "src": "1471:77:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "revokedAttestations",
+ "scope": 34897,
+ "stateVariable": true,
+ "storageLocation": "default",
+ "type": "mapping(bytes32 => bool)",
+ "value": null,
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "attributes": {
+ "type": "mapping(bytes32 => bool)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 33769,
+ "name": "ElementaryTypeName",
+ "src": "1603:7:96"
+ },
+ {
+ "attributes": {
+ "name": "bool",
+ "type": "bool"
+ },
+ "id": 33770,
+ "name": "ElementaryTypeName",
+ "src": "1614:4:96"
+ }
+ ],
+ "id": 33771,
+ "name": "Mapping",
+ "src": "1595:24:96"
+ }
+ ],
+ "id": 33772,
+ "name": "VariableDeclaration",
+ "src": "1595:51:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "eip712DomainSeparator",
+ "scope": 34897,
+ "stateVariable": true,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 33773,
+ "name": "ElementaryTypeName",
+ "src": "1651:7:96"
+ }
+ ],
+ "id": 33774,
+ "name": "VariableDeclaration",
+ "src": "1651:36:96"
+ },
+ {
+ "attributes": {
+ "constant": true,
+ "name": "EIP712_OWNERSHIP_ATTESTATION_TYPEHASH",
+ "scope": 34897,
+ "stateVariable": true,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 33775,
+ "name": "ElementaryTypeName",
+ "src": "1691:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "bytes32",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42900,
+ "type": "function (bytes memory) pure returns (bytes32)",
+ "value": "keccak256"
+ },
+ "id": 33776,
+ "name": "Identifier",
+ "src": "1755:9:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "bytes memory",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_e7a721c79bd6194969de59808d064adfff2bf26ebde6561626c3d8e8f9611f73",
+ "typeString": "literal_string \"OwnershipAttestation(bytes32 identifier,address issuer,\""
+ },
+ {
+ "typeIdentifier": "t_stringliteral_653717663fcc79e0893d5e59fde23473067ef2d1eb7ef9f8103cd47a120e34e3",
+ "typeString": "literal_string \"address account,address signer,uint64 issuedOn)\""
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "member_name": "encodePacked",
+ "referencedDeclaration": null,
+ "type": "function () pure returns (bytes memory)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42893,
+ "type": "abi",
+ "value": "abi"
+ },
+ "id": 33777,
+ "name": "Identifier",
+ "src": "1770:3:96"
+ }
+ ],
+ "id": 33778,
+ "name": "MemberAccess",
+ "src": "1770:16:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "4f776e6572736869704174746573746174696f6e2862797465733332206964656e7469666965722c61646472657373206973737565722c",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"OwnershipAttestation(bytes32 identifier,address issuer,\"",
+ "value": "OwnershipAttestation(bytes32 identifier,address issuer,"
+ },
+ "id": 33779,
+ "name": "Literal",
+ "src": "1794:57:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "61646472657373206163636f756e742c61646472657373207369676e65722c75696e743634206973737565644f6e29",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"address account,address signer,uint64 issuedOn)\"",
+ "value": "address account,address signer,uint64 issuedOn)"
+ },
+ "id": 33780,
+ "name": "Literal",
+ "src": "1859:49:96"
+ }
+ ],
+ "id": 33781,
+ "name": "FunctionCall",
+ "src": "1770:144:96"
+ }
+ ],
+ "id": 33782,
+ "name": "FunctionCall",
+ "src": "1755:163:96"
+ }
+ ],
+ "id": 33783,
+ "name": "VariableDeclaration",
+ "src": "1691:227:96"
+ },
+ {
+ "attributes": {
+ "constant": true,
+ "name": "MAX_ATTESTATIONS_PER_IDENTIFIER",
+ "scope": 34897,
+ "stateVariable": true,
+ "storageLocation": "default",
+ "type": "uint256",
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 33784,
+ "name": "ElementaryTypeName",
+ "src": "2120:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "3230",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 20",
+ "value": "20"
+ },
+ "id": 33785,
+ "name": "Literal",
+ "src": "2178:2:96"
+ }
+ ],
+ "id": 33786,
+ "name": "VariableDeclaration",
+ "src": "2120:60:96"
+ },
+ {
+ "attributes": {
+ "constant": true,
+ "name": "MAX_IDENTIFIERS_PER_ADDRESS",
+ "scope": 34897,
+ "stateVariable": true,
+ "storageLocation": "default",
+ "type": "uint256",
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 33787,
+ "name": "ElementaryTypeName",
+ "src": "2184:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "3230",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 20",
+ "value": "20"
+ },
+ "id": 33788,
+ "name": "Literal",
+ "src": "2238:2:96"
+ }
+ ],
+ "id": 33789,
+ "name": "VariableDeclaration",
+ "src": "2184:56:96"
+ },
+ {
+ "attributes": {
+ "anonymous": false,
+ "documentation": null,
+ "name": "EIP712DomainSeparatorSet"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": false,
+ "name": "eip712DomainSeparator",
+ "scope": 33793,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 33790,
+ "name": "ElementaryTypeName",
+ "src": "2276:7:96"
+ }
+ ],
+ "id": 33791,
+ "name": "VariableDeclaration",
+ "src": "2276:29:96"
+ }
+ ],
+ "id": 33792,
+ "name": "ParameterList",
+ "src": "2275:31:96"
+ }
+ ],
+ "id": 33793,
+ "name": "EventDefinition",
+ "src": "2245:62:96"
+ },
+ {
+ "attributes": {
+ "anonymous": false,
+ "documentation": null,
+ "name": "AttestationRegistered"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": true,
+ "name": "identifier",
+ "scope": 33807,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 33794,
+ "name": "ElementaryTypeName",
+ "src": "2343:7:96"
+ }
+ ],
+ "id": 33795,
+ "name": "VariableDeclaration",
+ "src": "2343:26:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": true,
+ "name": "issuer",
+ "scope": 33807,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33796,
+ "name": "ElementaryTypeName",
+ "src": "2375:7:96"
+ }
+ ],
+ "id": 33797,
+ "name": "VariableDeclaration",
+ "src": "2375:22:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": true,
+ "name": "account",
+ "scope": 33807,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33798,
+ "name": "ElementaryTypeName",
+ "src": "2403:7:96"
+ }
+ ],
+ "id": 33799,
+ "name": "VariableDeclaration",
+ "src": "2403:23:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": false,
+ "name": "signer",
+ "scope": 33807,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33800,
+ "name": "ElementaryTypeName",
+ "src": "2432:7:96"
+ }
+ ],
+ "id": 33801,
+ "name": "VariableDeclaration",
+ "src": "2432:14:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": false,
+ "name": "issuedOn",
+ "scope": 33807,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint64",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint64",
+ "type": "uint64"
+ },
+ "id": 33802,
+ "name": "ElementaryTypeName",
+ "src": "2452:6:96"
+ }
+ ],
+ "id": 33803,
+ "name": "VariableDeclaration",
+ "src": "2452:15:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": false,
+ "name": "publishedOn",
+ "scope": 33807,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint64",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint64",
+ "type": "uint64"
+ },
+ "id": 33804,
+ "name": "ElementaryTypeName",
+ "src": "2473:6:96"
+ }
+ ],
+ "id": 33805,
+ "name": "VariableDeclaration",
+ "src": "2473:18:96"
+ }
+ ],
+ "id": 33806,
+ "name": "ParameterList",
+ "src": "2337:158:96"
+ }
+ ],
+ "id": 33807,
+ "name": "EventDefinition",
+ "src": "2310:186:96"
+ },
+ {
+ "attributes": {
+ "anonymous": false,
+ "documentation": null,
+ "name": "AttestationRevoked"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": true,
+ "name": "identifier",
+ "scope": 33821,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 33808,
+ "name": "ElementaryTypeName",
+ "src": "2529:7:96"
+ }
+ ],
+ "id": 33809,
+ "name": "VariableDeclaration",
+ "src": "2529:26:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": true,
+ "name": "issuer",
+ "scope": 33821,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33810,
+ "name": "ElementaryTypeName",
+ "src": "2561:7:96"
+ }
+ ],
+ "id": 33811,
+ "name": "VariableDeclaration",
+ "src": "2561:22:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": true,
+ "name": "account",
+ "scope": 33821,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33812,
+ "name": "ElementaryTypeName",
+ "src": "2589:7:96"
+ }
+ ],
+ "id": 33813,
+ "name": "VariableDeclaration",
+ "src": "2589:23:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": false,
+ "name": "signer",
+ "scope": 33821,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33814,
+ "name": "ElementaryTypeName",
+ "src": "2618:7:96"
+ }
+ ],
+ "id": 33815,
+ "name": "VariableDeclaration",
+ "src": "2618:14:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": false,
+ "name": "issuedOn",
+ "scope": 33821,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint64",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint64",
+ "type": "uint64"
+ },
+ "id": 33816,
+ "name": "ElementaryTypeName",
+ "src": "2638:6:96"
+ }
+ ],
+ "id": 33817,
+ "name": "VariableDeclaration",
+ "src": "2638:15:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": false,
+ "name": "publishedOn",
+ "scope": 33821,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint64",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint64",
+ "type": "uint64"
+ },
+ "id": 33818,
+ "name": "ElementaryTypeName",
+ "src": "2659:6:96"
+ }
+ ],
+ "id": 33819,
+ "name": "VariableDeclaration",
+ "src": "2659:18:96"
+ }
+ ],
+ "id": 33820,
+ "name": "ParameterList",
+ "src": "2523:158:96"
+ }
+ ],
+ "id": 33821,
+ "name": "EventDefinition",
+ "src": "2499:183:96"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Sets initialized == true on implementation contracts\n@param test Set to true to skip implementation initialization",
+ "implemented": true,
+ "isConstructor": true,
+ "kind": "constructor",
+ "name": "",
+ "scope": 34897,
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "test",
+ "scope": 33830,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bool",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bool",
+ "type": "bool"
+ },
+ "id": 33822,
+ "name": "ElementaryTypeName",
+ "src": "2843:4:96"
+ }
+ ],
+ "id": 33823,
+ "name": "VariableDeclaration",
+ "src": "2843:9:96"
+ }
+ ],
+ "id": 33824,
+ "name": "ParameterList",
+ "src": "2842:11:96"
+ },
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 33828,
+ "name": "ParameterList",
+ "src": "2881:0:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 5884,
+ "type": "type(contract Initializable)",
+ "value": "Initializable"
+ },
+ "id": 33825,
+ "name": "Identifier",
+ "src": "2861:13:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33823,
+ "type": "bool",
+ "value": "test"
+ },
+ "id": 33826,
+ "name": "Identifier",
+ "src": "2875:4:96"
+ }
+ ],
+ "id": 33827,
+ "name": "ModifierInvocation",
+ "src": "2861:19:96"
+ },
+ {
+ "attributes": {
+ "statements": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 33829,
+ "name": "Block",
+ "src": "2881:2:96"
+ }
+ ],
+ "id": 33830,
+ "name": "FunctionDefinition",
+ "src": "2831:52:96"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Returns the storage, major, minor, and patch version of the contract.\n@return The storage, major, minor, and patch version of the contract.",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "getVersionNumber",
+ "scope": 34897,
+ "stateMutability": "pure",
+ "superFunction": 9106,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 33831,
+ "name": "ParameterList",
+ "src": "3082:2:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 33848,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 33832,
+ "name": "ElementaryTypeName",
+ "src": "3108:7:96"
+ }
+ ],
+ "id": 33833,
+ "name": "VariableDeclaration",
+ "src": "3108:7:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 33848,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 33834,
+ "name": "ElementaryTypeName",
+ "src": "3117:7:96"
+ }
+ ],
+ "id": 33835,
+ "name": "VariableDeclaration",
+ "src": "3117:7:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 33848,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 33836,
+ "name": "ElementaryTypeName",
+ "src": "3126:7:96"
+ }
+ ],
+ "id": 33837,
+ "name": "VariableDeclaration",
+ "src": "3126:7:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 33848,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 33838,
+ "name": "ElementaryTypeName",
+ "src": "3135:7:96"
+ }
+ ],
+ "id": 33839,
+ "name": "VariableDeclaration",
+ "src": "3135:7:96"
+ }
+ ],
+ "id": 33840,
+ "name": "ParameterList",
+ "src": "3107:36:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "functionReturnParameters": 33840
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "type": "tuple(int_const 1,int_const 1,int_const 0,int_const 0)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 33841,
+ "name": "Literal",
+ "src": "3158:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 33842,
+ "name": "Literal",
+ "src": "3161:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 33843,
+ "name": "Literal",
+ "src": "3164:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 33844,
+ "name": "Literal",
+ "src": "3167:1:96"
+ }
+ ],
+ "id": 33845,
+ "name": "TupleExpression",
+ "src": "3157:12:96"
+ }
+ ],
+ "id": 33846,
+ "name": "Return",
+ "src": "3150:19:96"
+ }
+ ],
+ "id": 33847,
+ "name": "Block",
+ "src": "3144:30:96"
+ }
+ ],
+ "id": 33848,
+ "name": "FunctionDefinition",
+ "src": "3057:117:96"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Used in place of the constructor to allow the contract to be upgradable via proxy.",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "name": "initialize",
+ "scope": 34897,
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 33849,
+ "name": "ParameterList",
+ "src": "3305:2:96"
+ },
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 33852,
+ "name": "ParameterList",
+ "src": "3329:0:96"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 5883,
+ "type": "modifier ()",
+ "value": "initializer"
+ },
+ "id": 33850,
+ "name": "Identifier",
+ "src": "3317:11:96"
+ }
+ ],
+ "id": 33851,
+ "name": "ModifierInvocation",
+ "src": "3317:11:96"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 480,
+ "type": "function (address)",
+ "value": "_transferOwnership"
+ },
+ "id": 33853,
+ "name": "Identifier",
+ "src": "3335:18:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 33854,
+ "name": "Identifier",
+ "src": "3354:3:96"
+ }
+ ],
+ "id": 33855,
+ "name": "MemberAccess",
+ "src": "3354:10:96"
+ }
+ ],
+ "id": 33856,
+ "name": "FunctionCall",
+ "src": "3335:30:96"
+ }
+ ],
+ "id": 33857,
+ "name": "ExpressionStatement",
+ "src": "3335:30:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "arguments": [
+ null
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ null
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34424,
+ "type": "function ()",
+ "value": "setEip712DomainSeparator"
+ },
+ "id": 33858,
+ "name": "Identifier",
+ "src": "3371:24:96"
+ }
+ ],
+ "id": 33859,
+ "name": "FunctionCall",
+ "src": "3371:26:96"
+ }
+ ],
+ "id": 33860,
+ "name": "ExpressionStatement",
+ "src": "3371:26:96"
+ }
+ ],
+ "id": 33861,
+ "name": "Block",
+ "src": "3329:73:96"
+ }
+ ],
+ "id": 33862,
+ "name": "FunctionDefinition",
+ "src": "3286:116:96"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Registers an attestation directly from the issuer\n@param identifier Hash of the identifier to be attested\n@param account Address of the account being mapped to the identifier\n@param issuedOn Time at which the issuer issued the attestation in Unix time \n@dev Attestation signer and issuer in storage is set to msg.sender\n@dev Throws if an attestation with the same (identifier, issuer, account) already exists",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "registerAttestationAsIssuer",
+ "scope": 34897,
+ "stateMutability": "nonpayable",
+ "superFunction": 36042,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifier",
+ "scope": 33882,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 33863,
+ "name": "ElementaryTypeName",
+ "src": "3902:7:96"
+ }
+ ],
+ "id": 33864,
+ "name": "VariableDeclaration",
+ "src": "3902:18:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "account",
+ "scope": 33882,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33865,
+ "name": "ElementaryTypeName",
+ "src": "3922:7:96"
+ }
+ ],
+ "id": 33866,
+ "name": "VariableDeclaration",
+ "src": "3922:15:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "issuedOn",
+ "scope": 33882,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint64",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint64",
+ "type": "uint64"
+ },
+ "id": 33867,
+ "name": "ElementaryTypeName",
+ "src": "3939:6:96"
+ }
+ ],
+ "id": 33868,
+ "name": "VariableDeclaration",
+ "src": "3939:15:96"
+ }
+ ],
+ "id": 33869,
+ "name": "ParameterList",
+ "src": "3901:54:96"
+ },
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 33870,
+ "name": "ParameterList",
+ "src": "3971:0:96"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34709,
+ "type": "function (bytes32,address,address,address,uint64)",
+ "value": "_registerAttestation"
+ },
+ "id": 33871,
+ "name": "Identifier",
+ "src": "3977:20:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33864,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 33872,
+ "name": "Identifier",
+ "src": "3998:10:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 33873,
+ "name": "Identifier",
+ "src": "4010:3:96"
+ }
+ ],
+ "id": 33874,
+ "name": "MemberAccess",
+ "src": "4010:10:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33866,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 33875,
+ "name": "Identifier",
+ "src": "4022:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 33876,
+ "name": "Identifier",
+ "src": "4031:3:96"
+ }
+ ],
+ "id": 33877,
+ "name": "MemberAccess",
+ "src": "4031:10:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33868,
+ "type": "uint64",
+ "value": "issuedOn"
+ },
+ "id": 33878,
+ "name": "Identifier",
+ "src": "4043:8:96"
+ }
+ ],
+ "id": 33879,
+ "name": "FunctionCall",
+ "src": "3977:75:96"
+ }
+ ],
+ "id": 33880,
+ "name": "ExpressionStatement",
+ "src": "3977:75:96"
+ }
+ ],
+ "id": 33881,
+ "name": "Block",
+ "src": "3971:86:96"
+ }
+ ],
+ "id": 33882,
+ "name": "FunctionDefinition",
+ "src": "3865:192:96"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Registers an attestation with a valid signature\n@param identifier Hash of the identifier to be attested\n@param issuer Address of the attestation issuer\n@param account Address of the account being mapped to the identifier\n@param issuedOn Time at which the issuer issued the attestation in Unix time \n@param signer Address of the signer of the attestation\n@param v The recovery id of the incoming ECDSA signature\n@param r Output value r of the ECDSA signature\n@param s Output value s of the ECDSA signature\n@dev Throws if an attestation with the same (identifier, issuer, account) already exists",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "registerAttestation",
+ "scope": 34897,
+ "stateMutability": "nonpayable",
+ "superFunction": 36061,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifier",
+ "scope": 33921,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 33883,
+ "name": "ElementaryTypeName",
+ "src": "4759:7:96"
+ }
+ ],
+ "id": 33884,
+ "name": "VariableDeclaration",
+ "src": "4759:18:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "issuer",
+ "scope": 33921,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33885,
+ "name": "ElementaryTypeName",
+ "src": "4783:7:96"
+ }
+ ],
+ "id": 33886,
+ "name": "VariableDeclaration",
+ "src": "4783:14:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "account",
+ "scope": 33921,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33887,
+ "name": "ElementaryTypeName",
+ "src": "4803:7:96"
+ }
+ ],
+ "id": 33888,
+ "name": "VariableDeclaration",
+ "src": "4803:15:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "signer",
+ "scope": 33921,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33889,
+ "name": "ElementaryTypeName",
+ "src": "4824:7:96"
+ }
+ ],
+ "id": 33890,
+ "name": "VariableDeclaration",
+ "src": "4824:14:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "issuedOn",
+ "scope": 33921,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint64",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint64",
+ "type": "uint64"
+ },
+ "id": 33891,
+ "name": "ElementaryTypeName",
+ "src": "4844:6:96"
+ }
+ ],
+ "id": 33892,
+ "name": "VariableDeclaration",
+ "src": "4844:15:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "v",
+ "scope": 33921,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint8",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint8",
+ "type": "uint8"
+ },
+ "id": 33893,
+ "name": "ElementaryTypeName",
+ "src": "4865:5:96"
+ }
+ ],
+ "id": 33894,
+ "name": "VariableDeclaration",
+ "src": "4865:7:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "r",
+ "scope": 33921,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 33895,
+ "name": "ElementaryTypeName",
+ "src": "4878:7:96"
+ }
+ ],
+ "id": 33896,
+ "name": "VariableDeclaration",
+ "src": "4878:9:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "s",
+ "scope": 33921,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 33897,
+ "name": "ElementaryTypeName",
+ "src": "4893:7:96"
+ }
+ ],
+ "id": 33898,
+ "name": "VariableDeclaration",
+ "src": "4893:9:96"
+ }
+ ],
+ "id": 33899,
+ "name": "ParameterList",
+ "src": "4753:153:96"
+ },
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 33900,
+ "name": "ParameterList",
+ "src": "4916:0:96"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34361,
+ "type": "function (bytes32,address,address,address,uint64,uint8,bytes32,bytes32) view",
+ "value": "validateAttestationSig"
+ },
+ "id": 33901,
+ "name": "Identifier",
+ "src": "4922:22:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33884,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 33902,
+ "name": "Identifier",
+ "src": "4945:10:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33886,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 33903,
+ "name": "Identifier",
+ "src": "4957:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33888,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 33904,
+ "name": "Identifier",
+ "src": "4965:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33890,
+ "type": "address",
+ "value": "signer"
+ },
+ "id": 33905,
+ "name": "Identifier",
+ "src": "4974:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33892,
+ "type": "uint64",
+ "value": "issuedOn"
+ },
+ "id": 33906,
+ "name": "Identifier",
+ "src": "4982:8:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33894,
+ "type": "uint8",
+ "value": "v"
+ },
+ "id": 33907,
+ "name": "Identifier",
+ "src": "4992:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33896,
+ "type": "bytes32",
+ "value": "r"
+ },
+ "id": 33908,
+ "name": "Identifier",
+ "src": "4995:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33898,
+ "type": "bytes32",
+ "value": "s"
+ },
+ "id": 33909,
+ "name": "Identifier",
+ "src": "4998:1:96"
+ }
+ ],
+ "id": 33910,
+ "name": "FunctionCall",
+ "src": "4922:78:96"
+ }
+ ],
+ "id": 33911,
+ "name": "ExpressionStatement",
+ "src": "4922:78:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34709,
+ "type": "function (bytes32,address,address,address,uint64)",
+ "value": "_registerAttestation"
+ },
+ "id": 33912,
+ "name": "Identifier",
+ "src": "5006:20:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33884,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 33913,
+ "name": "Identifier",
+ "src": "5027:10:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33886,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 33914,
+ "name": "Identifier",
+ "src": "5039:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33888,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 33915,
+ "name": "Identifier",
+ "src": "5047:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33890,
+ "type": "address",
+ "value": "signer"
+ },
+ "id": 33916,
+ "name": "Identifier",
+ "src": "5056:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33892,
+ "type": "uint64",
+ "value": "issuedOn"
+ },
+ "id": 33917,
+ "name": "Identifier",
+ "src": "5064:8:96"
+ }
+ ],
+ "id": 33918,
+ "name": "FunctionCall",
+ "src": "5006:67:96"
+ }
+ ],
+ "id": 33919,
+ "name": "ExpressionStatement",
+ "src": "5006:67:96"
+ }
+ ],
+ "id": 33920,
+ "name": "Block",
+ "src": "4916:162:96"
+ }
+ ],
+ "id": 33921,
+ "name": "FunctionDefinition",
+ "src": "4725:353:96"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Revokes an attestation \n@param identifier Hash of the identifier to be revoked\n@param issuer Address of the attestation issuer\n@param account Address of the account mapped to the identifier\n@dev Throws if sender is not the issuer, signer, or account",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "revokeAttestation",
+ "scope": 34897,
+ "stateMutability": "nonpayable",
+ "superFunction": 36070,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifier",
+ "scope": 33959,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 33922,
+ "name": "ElementaryTypeName",
+ "src": "5404:7:96"
+ }
+ ],
+ "id": 33923,
+ "name": "VariableDeclaration",
+ "src": "5404:18:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "issuer",
+ "scope": 33959,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33924,
+ "name": "ElementaryTypeName",
+ "src": "5424:7:96"
+ }
+ ],
+ "id": 33925,
+ "name": "VariableDeclaration",
+ "src": "5424:14:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "account",
+ "scope": 33959,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33926,
+ "name": "ElementaryTypeName",
+ "src": "5440:7:96"
+ }
+ ],
+ "id": 33927,
+ "name": "VariableDeclaration",
+ "src": "5440:15:96"
+ }
+ ],
+ "id": 33928,
+ "name": "ParameterList",
+ "src": "5403:53:96"
+ },
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 33929,
+ "name": "ParameterList",
+ "src": "5466:0:96"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_ffe87c20a2b3631c5e9a4409cdba4a059d6e2c1efb0e02934ed2054e307eb34e",
+ "typeString": "literal_string \"Sender does not have permission to revoke this attestation\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 33930,
+ "name": "Identifier",
+ "src": "5472:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "||",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "||",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "==",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33927,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 33931,
+ "name": "Identifier",
+ "src": "5487:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 33932,
+ "name": "Identifier",
+ "src": "5498:3:96"
+ }
+ ],
+ "id": 33933,
+ "name": "MemberAccess",
+ "src": "5498:10:96"
+ }
+ ],
+ "id": 33934,
+ "name": "BinaryOperation",
+ "src": "5487:21:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "==",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33925,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 33935,
+ "name": "Identifier",
+ "src": "5620:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 33936,
+ "name": "Identifier",
+ "src": "5630:3:96"
+ }
+ ],
+ "id": 33937,
+ "name": "MemberAccess",
+ "src": "5630:10:96"
+ }
+ ],
+ "id": 33938,
+ "name": "BinaryOperation",
+ "src": "5620:20:96"
+ }
+ ],
+ "id": 33939,
+ "name": "BinaryOperation",
+ "src": "5487:153:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "==",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "address",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "attestationSignerToAccount",
+ "referencedDeclaration": 8839,
+ "type": "function (address) view external returns (address)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "arguments": [
+ null
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "contract IAccounts",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ null
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 8548,
+ "type": "function () view returns (contract IAccounts)",
+ "value": "getAccounts"
+ },
+ "id": 33940,
+ "name": "Identifier",
+ "src": "5652:11:96"
+ }
+ ],
+ "id": 33941,
+ "name": "FunctionCall",
+ "src": "5652:13:96"
+ }
+ ],
+ "id": 33942,
+ "name": "MemberAccess",
+ "src": "5652:40:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 33943,
+ "name": "Identifier",
+ "src": "5693:3:96"
+ }
+ ],
+ "id": 33944,
+ "name": "MemberAccess",
+ "src": "5693:10:96"
+ }
+ ],
+ "id": 33945,
+ "name": "FunctionCall",
+ "src": "5652:52:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33925,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 33946,
+ "name": "Identifier",
+ "src": "5708:6:96"
+ }
+ ],
+ "id": 33947,
+ "name": "BinaryOperation",
+ "src": "5652:62:96"
+ }
+ ],
+ "id": 33948,
+ "name": "BinaryOperation",
+ "src": "5487:227:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "53656e64657220646f6573206e6f742068617665207065726d697373696f6e20746f207265766f6b652074686973206174746573746174696f6e",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"Sender does not have permission to revoke this attestation\"",
+ "value": "Sender does not have permission to revoke this attestation"
+ },
+ "id": 33949,
+ "name": "Literal",
+ "src": "5722:60:96"
+ }
+ ],
+ "id": 33950,
+ "name": "FunctionCall",
+ "src": "5472:316:96"
+ }
+ ],
+ "id": 33951,
+ "name": "ExpressionStatement",
+ "src": "5472:316:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34896,
+ "type": "function (bytes32,address,address)",
+ "value": "_revokeAttestation"
+ },
+ "id": 33952,
+ "name": "Identifier",
+ "src": "5794:18:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33923,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 33953,
+ "name": "Identifier",
+ "src": "5813:10:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33925,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 33954,
+ "name": "Identifier",
+ "src": "5825:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33927,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 33955,
+ "name": "Identifier",
+ "src": "5833:7:96"
+ }
+ ],
+ "id": 33956,
+ "name": "FunctionCall",
+ "src": "5794:47:96"
+ }
+ ],
+ "id": 33957,
+ "name": "ExpressionStatement",
+ "src": "5794:47:96"
+ }
+ ],
+ "id": 33958,
+ "name": "Block",
+ "src": "5466:380:96"
+ }
+ ],
+ "id": 33959,
+ "name": "FunctionDefinition",
+ "src": "5377:469:96"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Revokes attestations [identifiers <-> accounts] from issuer\n@param issuer Address of the issuer of all attestations to be revoked\n@param identifiers Hash of the identifiers\n@param accounts Addresses of the accounts mapped to the identifiers\n at the same indices\n@dev Throws if the number of identifiers and accounts is not the same\n@dev Throws if sender is not the issuer or currently registered signer of issuer\n@dev Throws if an attestation is not found for identifiers[i] <-> accounts[i]",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "batchRevokeAttestations",
+ "scope": 34897,
+ "stateMutability": "nonpayable",
+ "superFunction": 36081,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "issuer",
+ "scope": 34024,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33960,
+ "name": "ElementaryTypeName",
+ "src": "6440:7:96"
+ }
+ ],
+ "id": 33961,
+ "name": "VariableDeclaration",
+ "src": "6440:14:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifiers",
+ "scope": 34024,
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "type": "bytes32[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "bytes32[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 33962,
+ "name": "ElementaryTypeName",
+ "src": "6460:7:96"
+ }
+ ],
+ "id": 33963,
+ "name": "ArrayTypeName",
+ "src": "6460:9:96"
+ }
+ ],
+ "id": 33964,
+ "name": "VariableDeclaration",
+ "src": "6460:30:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "accounts",
+ "scope": 34024,
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 33965,
+ "name": "ElementaryTypeName",
+ "src": "6496:7:96"
+ }
+ ],
+ "id": 33966,
+ "name": "ArrayTypeName",
+ "src": "6496:9:96"
+ }
+ ],
+ "id": 33967,
+ "name": "VariableDeclaration",
+ "src": "6496:27:96"
+ }
+ ],
+ "id": 33968,
+ "name": "ParameterList",
+ "src": "6434:93:96"
+ },
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 33969,
+ "name": "ParameterList",
+ "src": "6537:0:96"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_93041103517ee4536f3f372952036fa7b4b22be4e8399f08ba432c41799de694",
+ "typeString": "literal_string \"Unequal number of identifiers and accounts\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 33970,
+ "name": "Identifier",
+ "src": "6543:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "==",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33964,
+ "type": "bytes32[] calldata",
+ "value": "identifiers"
+ },
+ "id": 33971,
+ "name": "Identifier",
+ "src": "6551:11:96"
+ }
+ ],
+ "id": 33972,
+ "name": "MemberAccess",
+ "src": "6551:18:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33967,
+ "type": "address[] calldata",
+ "value": "accounts"
+ },
+ "id": 33973,
+ "name": "Identifier",
+ "src": "6573:8:96"
+ }
+ ],
+ "id": 33974,
+ "name": "MemberAccess",
+ "src": "6573:15:96"
+ }
+ ],
+ "id": 33975,
+ "name": "BinaryOperation",
+ "src": "6551:37:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "556e657175616c206e756d626572206f66206964656e7469666965727320616e64206163636f756e7473",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"Unequal number of identifiers and accounts\"",
+ "value": "Unequal number of identifiers and accounts"
+ },
+ "id": 33976,
+ "name": "Literal",
+ "src": "6590:44:96"
+ }
+ ],
+ "id": 33977,
+ "name": "FunctionCall",
+ "src": "6543:92:96"
+ }
+ ],
+ "id": 33978,
+ "name": "ExpressionStatement",
+ "src": "6543:92:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_da7c87636d47b91b09241d06f5e76ba712ec96f0362ee3e321b7617528288a87",
+ "typeString": "literal_string \"Sender does not have permission to revoke attestations from this issuer\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 33979,
+ "name": "Identifier",
+ "src": "6641:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "||",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "==",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33961,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 33980,
+ "name": "Identifier",
+ "src": "6656:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 33981,
+ "name": "Identifier",
+ "src": "6666:3:96"
+ }
+ ],
+ "id": 33982,
+ "name": "MemberAccess",
+ "src": "6666:10:96"
+ }
+ ],
+ "id": 33983,
+ "name": "BinaryOperation",
+ "src": "6656:20:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "==",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "address",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "attestationSignerToAccount",
+ "referencedDeclaration": 8839,
+ "type": "function (address) view external returns (address)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "arguments": [
+ null
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "contract IAccounts",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ null
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 8548,
+ "type": "function () view returns (contract IAccounts)",
+ "value": "getAccounts"
+ },
+ "id": 33984,
+ "name": "Identifier",
+ "src": "6680:11:96"
+ }
+ ],
+ "id": 33985,
+ "name": "FunctionCall",
+ "src": "6680:13:96"
+ }
+ ],
+ "id": 33986,
+ "name": "MemberAccess",
+ "src": "6680:40:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 33987,
+ "name": "Identifier",
+ "src": "6721:3:96"
+ }
+ ],
+ "id": 33988,
+ "name": "MemberAccess",
+ "src": "6721:10:96"
+ }
+ ],
+ "id": 33989,
+ "name": "FunctionCall",
+ "src": "6680:52:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33961,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 33990,
+ "name": "Identifier",
+ "src": "6736:6:96"
+ }
+ ],
+ "id": 33991,
+ "name": "BinaryOperation",
+ "src": "6680:62:96"
+ }
+ ],
+ "id": 33992,
+ "name": "BinaryOperation",
+ "src": "6656:86:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "53656e64657220646f6573206e6f742068617665207065726d697373696f6e20746f207265766f6b65206174746573746174696f6e732066726f6d207468697320697373756572",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"Sender does not have permission to revoke attestations from this issuer\"",
+ "value": "Sender does not have permission to revoke attestations from this issuer"
+ },
+ "id": 33993,
+ "name": "Literal",
+ "src": "6750:73:96"
+ }
+ ],
+ "id": 33994,
+ "name": "FunctionCall",
+ "src": "6641:188:96"
+ }
+ ],
+ "id": 33995,
+ "name": "ExpressionStatement",
+ "src": "6641:188:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 33997
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "i",
+ "scope": 34022,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 33996,
+ "name": "ElementaryTypeName",
+ "src": "6841:7:96"
+ }
+ ],
+ "id": 33997,
+ "name": "VariableDeclaration",
+ "src": "6841:9:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 33998,
+ "name": "Literal",
+ "src": "6853:1:96"
+ }
+ ],
+ "id": 33999,
+ "name": "VariableDeclarationStatement",
+ "src": "6841:13:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "<",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33997,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34000,
+ "name": "Identifier",
+ "src": "6856:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33964,
+ "type": "bytes32[] calldata",
+ "value": "identifiers"
+ },
+ "id": 34001,
+ "name": "Identifier",
+ "src": "6860:11:96"
+ }
+ ],
+ "id": 34002,
+ "name": "MemberAccess",
+ "src": "6860:18:96"
+ }
+ ],
+ "id": 34003,
+ "name": "BinaryOperation",
+ "src": "6856:22:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33997,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34004,
+ "name": "Identifier",
+ "src": "6880:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33997,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34005,
+ "name": "Identifier",
+ "src": "6884:1:96"
+ }
+ ],
+ "id": 34006,
+ "name": "MemberAccess",
+ "src": "6884:5:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 34007,
+ "name": "Literal",
+ "src": "6890:1:96"
+ }
+ ],
+ "id": 34008,
+ "name": "FunctionCall",
+ "src": "6884:8:96"
+ }
+ ],
+ "id": 34009,
+ "name": "Assignment",
+ "src": "6880:12:96"
+ }
+ ],
+ "id": 34010,
+ "name": "ExpressionStatement",
+ "src": "6880:12:96"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34896,
+ "type": "function (bytes32,address,address)",
+ "value": "_revokeAttestation"
+ },
+ "id": 34011,
+ "name": "Identifier",
+ "src": "6902:18:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "bytes32"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33964,
+ "type": "bytes32[] calldata",
+ "value": "identifiers"
+ },
+ "id": 34012,
+ "name": "Identifier",
+ "src": "6921:11:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33997,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34013,
+ "name": "Identifier",
+ "src": "6933:1:96"
+ }
+ ],
+ "id": 34014,
+ "name": "IndexAccess",
+ "src": "6921:14:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33961,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 34015,
+ "name": "Identifier",
+ "src": "6937:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33967,
+ "type": "address[] calldata",
+ "value": "accounts"
+ },
+ "id": 34016,
+ "name": "Identifier",
+ "src": "6945:8:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33997,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34017,
+ "name": "Identifier",
+ "src": "6954:1:96"
+ }
+ ],
+ "id": 34018,
+ "name": "IndexAccess",
+ "src": "6945:11:96"
+ }
+ ],
+ "id": 34019,
+ "name": "FunctionCall",
+ "src": "6902:55:96"
+ }
+ ],
+ "id": 34020,
+ "name": "ExpressionStatement",
+ "src": "6902:55:96"
+ }
+ ],
+ "id": 34021,
+ "name": "Block",
+ "src": "6894:70:96"
+ }
+ ],
+ "id": 34022,
+ "name": "ForStatement",
+ "src": "6836:128:96"
+ }
+ ],
+ "id": 34023,
+ "name": "Block",
+ "src": "6537:431:96"
+ }
+ ],
+ "id": 34024,
+ "name": "FunctionDefinition",
+ "src": "6402:566:96"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Returns info about attestations for `identifier` produced by \n signers of `trustedIssuers`\n@param identifier Hash of the identifier\n@param trustedIssuers Array of n issuers whose attestations will be included\n@return countsPerIssuer Array of number of attestations returned per issuer\n For m (== sum([0])) found attestations: \n@return accounts Array of m accounts \n@return signers Array of m signers\n@return issuedOns Array of m issuedOns\n@return publishedOns Array of m publishedOns\n@dev Adds attestation info to the arrays in order of provided trustedIssuers\n@dev Expectation that only one attestation exists per (identifier, issuer, account)",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "lookupAttestations",
+ "scope": 34897,
+ "stateMutability": "view",
+ "superFunction": 36104,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifier",
+ "scope": 34195,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 34025,
+ "name": "ElementaryTypeName",
+ "src": "7735:7:96"
+ }
+ ],
+ "id": 34026,
+ "name": "VariableDeclaration",
+ "src": "7735:18:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "trustedIssuers",
+ "scope": 34195,
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34027,
+ "name": "ElementaryTypeName",
+ "src": "7755:7:96"
+ }
+ ],
+ "id": 34028,
+ "name": "ArrayTypeName",
+ "src": "7755:9:96"
+ }
+ ],
+ "id": 34029,
+ "name": "VariableDeclaration",
+ "src": "7755:33:96"
+ }
+ ],
+ "id": 34030,
+ "name": "ParameterList",
+ "src": "7734:55:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "countsPerIssuer",
+ "scope": 34195,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "uint256[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "uint256[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34031,
+ "name": "ElementaryTypeName",
+ "src": "7832:7:96"
+ }
+ ],
+ "id": 34032,
+ "name": "ArrayTypeName",
+ "src": "7832:9:96"
+ }
+ ],
+ "id": 34033,
+ "name": "VariableDeclaration",
+ "src": "7832:32:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "accounts",
+ "scope": 34195,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34034,
+ "name": "ElementaryTypeName",
+ "src": "7872:7:96"
+ }
+ ],
+ "id": 34035,
+ "name": "ArrayTypeName",
+ "src": "7872:9:96"
+ }
+ ],
+ "id": 34036,
+ "name": "VariableDeclaration",
+ "src": "7872:25:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "signers",
+ "scope": 34195,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34037,
+ "name": "ElementaryTypeName",
+ "src": "7905:7:96"
+ }
+ ],
+ "id": 34038,
+ "name": "ArrayTypeName",
+ "src": "7905:9:96"
+ }
+ ],
+ "id": 34039,
+ "name": "VariableDeclaration",
+ "src": "7905:24:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "issuedOns",
+ "scope": 34195,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "uint64[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "uint64[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint64",
+ "type": "uint64"
+ },
+ "id": 34040,
+ "name": "ElementaryTypeName",
+ "src": "7937:6:96"
+ }
+ ],
+ "id": 34041,
+ "name": "ArrayTypeName",
+ "src": "7937:8:96"
+ }
+ ],
+ "id": 34042,
+ "name": "VariableDeclaration",
+ "src": "7937:25:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "publishedOns",
+ "scope": 34195,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "uint64[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "uint64[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint64",
+ "type": "uint64"
+ },
+ "id": 34043,
+ "name": "ElementaryTypeName",
+ "src": "7970:6:96"
+ }
+ ],
+ "id": 34044,
+ "name": "ArrayTypeName",
+ "src": "7970:8:96"
+ }
+ ],
+ "id": 34045,
+ "name": "VariableDeclaration",
+ "src": "7970:28:96"
+ }
+ ],
+ "id": 34046,
+ "name": "ParameterList",
+ "src": "7824:180:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 34048
+ ],
+ "initialValue": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "totalAttestations",
+ "scope": 34194,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34047,
+ "name": "ElementaryTypeName",
+ "src": "8013:7:96"
+ }
+ ],
+ "id": 34048,
+ "name": "VariableDeclaration",
+ "src": "8013:25:96"
+ }
+ ],
+ "id": 34049,
+ "name": "VariableDeclarationStatement",
+ "src": "8013:25:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "tuple()"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "type": "tuple(uint256,uint256[] memory)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34048,
+ "type": "uint256",
+ "value": "totalAttestations"
+ },
+ "id": 34050,
+ "name": "Identifier",
+ "src": "8045:17:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34033,
+ "type": "uint256[] memory",
+ "value": "countsPerIssuer"
+ },
+ "id": 34051,
+ "name": "Identifier",
+ "src": "8064:15:96"
+ }
+ ],
+ "id": 34052,
+ "name": "TupleExpression",
+ "src": "8044:36:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple(uint256,uint256[] memory)",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34499,
+ "type": "function (bytes32,address[] memory) view returns (uint256,uint256[] memory)",
+ "value": "getNumAttestations"
+ },
+ "id": 34053,
+ "name": "Identifier",
+ "src": "8083:18:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34026,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 34054,
+ "name": "Identifier",
+ "src": "8102:10:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34029,
+ "type": "address[] calldata",
+ "value": "trustedIssuers"
+ },
+ "id": 34055,
+ "name": "Identifier",
+ "src": "8114:14:96"
+ }
+ ],
+ "id": 34056,
+ "name": "FunctionCall",
+ "src": "8083:46:96"
+ }
+ ],
+ "id": 34057,
+ "name": "Assignment",
+ "src": "8044:85:96"
+ }
+ ],
+ "id": 34058,
+ "name": "ExpressionStatement",
+ "src": "8044:85:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "address[] memory"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34036,
+ "type": "address[] memory",
+ "value": "accounts"
+ },
+ "id": 34059,
+ "name": "Identifier",
+ "src": "8136:8:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "address[] memory",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "type": "function (uint256) pure returns (address[] memory)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34060,
+ "name": "ElementaryTypeName",
+ "src": "8151:7:96"
+ }
+ ],
+ "id": 34061,
+ "name": "ArrayTypeName",
+ "src": "8151:9:96"
+ }
+ ],
+ "id": 34062,
+ "name": "NewExpression",
+ "src": "8147:13:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34048,
+ "type": "uint256",
+ "value": "totalAttestations"
+ },
+ "id": 34063,
+ "name": "Identifier",
+ "src": "8161:17:96"
+ }
+ ],
+ "id": 34064,
+ "name": "FunctionCall",
+ "src": "8147:32:96"
+ }
+ ],
+ "id": 34065,
+ "name": "Assignment",
+ "src": "8136:43:96"
+ }
+ ],
+ "id": 34066,
+ "name": "ExpressionStatement",
+ "src": "8136:43:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "address[] memory"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34039,
+ "type": "address[] memory",
+ "value": "signers"
+ },
+ "id": 34067,
+ "name": "Identifier",
+ "src": "8185:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "address[] memory",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "type": "function (uint256) pure returns (address[] memory)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34068,
+ "name": "ElementaryTypeName",
+ "src": "8199:7:96"
+ }
+ ],
+ "id": 34069,
+ "name": "ArrayTypeName",
+ "src": "8199:9:96"
+ }
+ ],
+ "id": 34070,
+ "name": "NewExpression",
+ "src": "8195:13:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34048,
+ "type": "uint256",
+ "value": "totalAttestations"
+ },
+ "id": 34071,
+ "name": "Identifier",
+ "src": "8209:17:96"
+ }
+ ],
+ "id": 34072,
+ "name": "FunctionCall",
+ "src": "8195:32:96"
+ }
+ ],
+ "id": 34073,
+ "name": "Assignment",
+ "src": "8185:42:96"
+ }
+ ],
+ "id": 34074,
+ "name": "ExpressionStatement",
+ "src": "8185:42:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint64[] memory"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34042,
+ "type": "uint64[] memory",
+ "value": "issuedOns"
+ },
+ "id": 34075,
+ "name": "Identifier",
+ "src": "8233:9:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint64[] memory",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "type": "function (uint256) pure returns (uint64[] memory)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "uint64[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint64",
+ "type": "uint64"
+ },
+ "id": 34076,
+ "name": "ElementaryTypeName",
+ "src": "8249:6:96"
+ }
+ ],
+ "id": 34077,
+ "name": "ArrayTypeName",
+ "src": "8249:8:96"
+ }
+ ],
+ "id": 34078,
+ "name": "NewExpression",
+ "src": "8245:12:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34048,
+ "type": "uint256",
+ "value": "totalAttestations"
+ },
+ "id": 34079,
+ "name": "Identifier",
+ "src": "8258:17:96"
+ }
+ ],
+ "id": 34080,
+ "name": "FunctionCall",
+ "src": "8245:31:96"
+ }
+ ],
+ "id": 34081,
+ "name": "Assignment",
+ "src": "8233:43:96"
+ }
+ ],
+ "id": 34082,
+ "name": "ExpressionStatement",
+ "src": "8233:43:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint64[] memory"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34045,
+ "type": "uint64[] memory",
+ "value": "publishedOns"
+ },
+ "id": 34083,
+ "name": "Identifier",
+ "src": "8282:12:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint64[] memory",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "type": "function (uint256) pure returns (uint64[] memory)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "uint64[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint64",
+ "type": "uint64"
+ },
+ "id": 34084,
+ "name": "ElementaryTypeName",
+ "src": "8301:6:96"
+ }
+ ],
+ "id": 34085,
+ "name": "ArrayTypeName",
+ "src": "8301:8:96"
+ }
+ ],
+ "id": 34086,
+ "name": "NewExpression",
+ "src": "8297:12:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34048,
+ "type": "uint256",
+ "value": "totalAttestations"
+ },
+ "id": 34087,
+ "name": "Identifier",
+ "src": "8310:17:96"
+ }
+ ],
+ "id": 34088,
+ "name": "FunctionCall",
+ "src": "8297:31:96"
+ }
+ ],
+ "id": 34089,
+ "name": "Assignment",
+ "src": "8282:46:96"
+ }
+ ],
+ "id": 34090,
+ "name": "ExpressionStatement",
+ "src": "8282:46:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34048,
+ "type": "uint256",
+ "value": "totalAttestations"
+ },
+ "id": 34091,
+ "name": "Identifier",
+ "src": "8335:17:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 34092,
+ "name": "Literal",
+ "src": "8355:1:96"
+ }
+ ],
+ "id": 34093,
+ "name": "Assignment",
+ "src": "8335:21:96"
+ }
+ ],
+ "id": 34094,
+ "name": "ExpressionStatement",
+ "src": "8335:21:96"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 34098
+ ],
+ "initialValue": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "attestationsPerIssuer",
+ "scope": 34194,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "struct FederatedAttestations.OwnershipAttestation[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "struct FederatedAttestations.OwnershipAttestation[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "OwnershipAttestation",
+ "referencedDeclaration": 33754,
+ "type": "struct FederatedAttestations.OwnershipAttestation"
+ },
+ "id": 34096,
+ "name": "UserDefinedTypeName",
+ "src": "8362:20:96"
+ }
+ ],
+ "id": 34097,
+ "name": "ArrayTypeName",
+ "src": "8362:22:96"
+ }
+ ],
+ "id": 34098,
+ "name": "VariableDeclaration",
+ "src": "8362:51:96"
+ }
+ ],
+ "id": 34099,
+ "name": "VariableDeclarationStatement",
+ "src": "8362:51:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 34101
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "i",
+ "scope": 34186,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34100,
+ "name": "ElementaryTypeName",
+ "src": "8425:7:96"
+ }
+ ],
+ "id": 34101,
+ "name": "VariableDeclaration",
+ "src": "8425:9:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 34102,
+ "name": "Literal",
+ "src": "8437:1:96"
+ }
+ ],
+ "id": 34103,
+ "name": "VariableDeclarationStatement",
+ "src": "8425:13:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "<",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34101,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34104,
+ "name": "Identifier",
+ "src": "8440:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34029,
+ "type": "address[] calldata",
+ "value": "trustedIssuers"
+ },
+ "id": 34105,
+ "name": "Identifier",
+ "src": "8444:14:96"
+ }
+ ],
+ "id": 34106,
+ "name": "MemberAccess",
+ "src": "8444:21:96"
+ }
+ ],
+ "id": 34107,
+ "name": "BinaryOperation",
+ "src": "8440:25:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34101,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34108,
+ "name": "Identifier",
+ "src": "8467:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34101,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34109,
+ "name": "Identifier",
+ "src": "8471:1:96"
+ }
+ ],
+ "id": 34110,
+ "name": "MemberAccess",
+ "src": "8471:5:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 34111,
+ "name": "Literal",
+ "src": "8477:1:96"
+ }
+ ],
+ "id": 34112,
+ "name": "FunctionCall",
+ "src": "8471:8:96"
+ }
+ ],
+ "id": 34113,
+ "name": "Assignment",
+ "src": "8467:12:96"
+ }
+ ],
+ "id": 34114,
+ "name": "ExpressionStatement",
+ "src": "8467:12:96"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "struct FederatedAttestations.OwnershipAttestation memory[] memory"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34098,
+ "type": "struct FederatedAttestations.OwnershipAttestation memory[] memory",
+ "value": "attestationsPerIssuer"
+ },
+ "id": 34115,
+ "name": "Identifier",
+ "src": "8489:21:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33761,
+ "type": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))",
+ "value": "identifierToAttestations"
+ },
+ "id": 34116,
+ "name": "Identifier",
+ "src": "8513:24:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34026,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 34117,
+ "name": "Identifier",
+ "src": "8538:10:96"
+ }
+ ],
+ "id": 34118,
+ "name": "IndexAccess",
+ "src": "8513:36:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34029,
+ "type": "address[] calldata",
+ "value": "trustedIssuers"
+ },
+ "id": 34119,
+ "name": "Identifier",
+ "src": "8550:14:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34101,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34120,
+ "name": "Identifier",
+ "src": "8565:1:96"
+ }
+ ],
+ "id": 34121,
+ "name": "IndexAccess",
+ "src": "8550:17:96"
+ }
+ ],
+ "id": 34122,
+ "name": "IndexAccess",
+ "src": "8513:55:96"
+ }
+ ],
+ "id": 34123,
+ "name": "Assignment",
+ "src": "8489:79:96"
+ }
+ ],
+ "id": 34124,
+ "name": "ExpressionStatement",
+ "src": "8489:79:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 34126
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "j",
+ "scope": 34184,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34125,
+ "name": "ElementaryTypeName",
+ "src": "8581:7:96"
+ }
+ ],
+ "id": 34126,
+ "name": "VariableDeclaration",
+ "src": "8581:9:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 34127,
+ "name": "Literal",
+ "src": "8593:1:96"
+ }
+ ],
+ "id": 34128,
+ "name": "VariableDeclarationStatement",
+ "src": "8581:13:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "<",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34126,
+ "type": "uint256",
+ "value": "j"
+ },
+ "id": 34129,
+ "name": "Identifier",
+ "src": "8596:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34098,
+ "type": "struct FederatedAttestations.OwnershipAttestation memory[] memory",
+ "value": "attestationsPerIssuer"
+ },
+ "id": 34130,
+ "name": "Identifier",
+ "src": "8600:21:96"
+ }
+ ],
+ "id": 34131,
+ "name": "MemberAccess",
+ "src": "8600:28:96"
+ }
+ ],
+ "id": 34132,
+ "name": "BinaryOperation",
+ "src": "8596:32:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34126,
+ "type": "uint256",
+ "value": "j"
+ },
+ "id": 34133,
+ "name": "Identifier",
+ "src": "8630:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34126,
+ "type": "uint256",
+ "value": "j"
+ },
+ "id": 34134,
+ "name": "Identifier",
+ "src": "8634:1:96"
+ }
+ ],
+ "id": 34135,
+ "name": "MemberAccess",
+ "src": "8634:5:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 34136,
+ "name": "Literal",
+ "src": "8640:1:96"
+ }
+ ],
+ "id": 34137,
+ "name": "FunctionCall",
+ "src": "8634:8:96"
+ }
+ ],
+ "id": 34138,
+ "name": "Assignment",
+ "src": "8630:12:96"
+ }
+ ],
+ "id": 34139,
+ "name": "ExpressionStatement",
+ "src": "8630:12:96"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34036,
+ "type": "address[] memory",
+ "value": "accounts"
+ },
+ "id": 34140,
+ "name": "Identifier",
+ "src": "8654:8:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34048,
+ "type": "uint256",
+ "value": "totalAttestations"
+ },
+ "id": 34141,
+ "name": "Identifier",
+ "src": "8663:17:96"
+ }
+ ],
+ "id": 34142,
+ "name": "IndexAccess",
+ "src": "8654:27:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "account",
+ "referencedDeclaration": 33747,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "struct FederatedAttestations.OwnershipAttestation memory"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34098,
+ "type": "struct FederatedAttestations.OwnershipAttestation memory[] memory",
+ "value": "attestationsPerIssuer"
+ },
+ "id": 34143,
+ "name": "Identifier",
+ "src": "8684:21:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34126,
+ "type": "uint256",
+ "value": "j"
+ },
+ "id": 34144,
+ "name": "Identifier",
+ "src": "8706:1:96"
+ }
+ ],
+ "id": 34145,
+ "name": "IndexAccess",
+ "src": "8684:24:96"
+ }
+ ],
+ "id": 34146,
+ "name": "MemberAccess",
+ "src": "8684:32:96"
+ }
+ ],
+ "id": 34147,
+ "name": "Assignment",
+ "src": "8654:62:96"
+ }
+ ],
+ "id": 34148,
+ "name": "ExpressionStatement",
+ "src": "8654:62:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34039,
+ "type": "address[] memory",
+ "value": "signers"
+ },
+ "id": 34149,
+ "name": "Identifier",
+ "src": "8726:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34048,
+ "type": "uint256",
+ "value": "totalAttestations"
+ },
+ "id": 34150,
+ "name": "Identifier",
+ "src": "8734:17:96"
+ }
+ ],
+ "id": 34151,
+ "name": "IndexAccess",
+ "src": "8726:26:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "signer",
+ "referencedDeclaration": 33749,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "struct FederatedAttestations.OwnershipAttestation memory"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34098,
+ "type": "struct FederatedAttestations.OwnershipAttestation memory[] memory",
+ "value": "attestationsPerIssuer"
+ },
+ "id": 34152,
+ "name": "Identifier",
+ "src": "8755:21:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34126,
+ "type": "uint256",
+ "value": "j"
+ },
+ "id": 34153,
+ "name": "Identifier",
+ "src": "8777:1:96"
+ }
+ ],
+ "id": 34154,
+ "name": "IndexAccess",
+ "src": "8755:24:96"
+ }
+ ],
+ "id": 34155,
+ "name": "MemberAccess",
+ "src": "8755:31:96"
+ }
+ ],
+ "id": 34156,
+ "name": "Assignment",
+ "src": "8726:60:96"
+ }
+ ],
+ "id": 34157,
+ "name": "ExpressionStatement",
+ "src": "8726:60:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint64"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "type": "uint64"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34042,
+ "type": "uint64[] memory",
+ "value": "issuedOns"
+ },
+ "id": 34158,
+ "name": "Identifier",
+ "src": "8796:9:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34048,
+ "type": "uint256",
+ "value": "totalAttestations"
+ },
+ "id": 34159,
+ "name": "Identifier",
+ "src": "8806:17:96"
+ }
+ ],
+ "id": 34160,
+ "name": "IndexAccess",
+ "src": "8796:28:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "issuedOn",
+ "referencedDeclaration": 33751,
+ "type": "uint64"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "struct FederatedAttestations.OwnershipAttestation memory"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34098,
+ "type": "struct FederatedAttestations.OwnershipAttestation memory[] memory",
+ "value": "attestationsPerIssuer"
+ },
+ "id": 34161,
+ "name": "Identifier",
+ "src": "8827:21:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34126,
+ "type": "uint256",
+ "value": "j"
+ },
+ "id": 34162,
+ "name": "Identifier",
+ "src": "8849:1:96"
+ }
+ ],
+ "id": 34163,
+ "name": "IndexAccess",
+ "src": "8827:24:96"
+ }
+ ],
+ "id": 34164,
+ "name": "MemberAccess",
+ "src": "8827:33:96"
+ }
+ ],
+ "id": 34165,
+ "name": "Assignment",
+ "src": "8796:64:96"
+ }
+ ],
+ "id": 34166,
+ "name": "ExpressionStatement",
+ "src": "8796:64:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint64"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "type": "uint64"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34045,
+ "type": "uint64[] memory",
+ "value": "publishedOns"
+ },
+ "id": 34167,
+ "name": "Identifier",
+ "src": "8870:12:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34048,
+ "type": "uint256",
+ "value": "totalAttestations"
+ },
+ "id": 34168,
+ "name": "Identifier",
+ "src": "8883:17:96"
+ }
+ ],
+ "id": 34169,
+ "name": "IndexAccess",
+ "src": "8870:31:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "publishedOn",
+ "referencedDeclaration": 33753,
+ "type": "uint64"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "struct FederatedAttestations.OwnershipAttestation memory"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34098,
+ "type": "struct FederatedAttestations.OwnershipAttestation memory[] memory",
+ "value": "attestationsPerIssuer"
+ },
+ "id": 34170,
+ "name": "Identifier",
+ "src": "8904:21:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34126,
+ "type": "uint256",
+ "value": "j"
+ },
+ "id": 34171,
+ "name": "Identifier",
+ "src": "8926:1:96"
+ }
+ ],
+ "id": 34172,
+ "name": "IndexAccess",
+ "src": "8904:24:96"
+ }
+ ],
+ "id": 34173,
+ "name": "MemberAccess",
+ "src": "8904:36:96"
+ }
+ ],
+ "id": 34174,
+ "name": "Assignment",
+ "src": "8870:70:96"
+ }
+ ],
+ "id": 34175,
+ "name": "ExpressionStatement",
+ "src": "8870:70:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34048,
+ "type": "uint256",
+ "value": "totalAttestations"
+ },
+ "id": 34176,
+ "name": "Identifier",
+ "src": "8950:17:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34048,
+ "type": "uint256",
+ "value": "totalAttestations"
+ },
+ "id": 34177,
+ "name": "Identifier",
+ "src": "8970:17:96"
+ }
+ ],
+ "id": 34178,
+ "name": "MemberAccess",
+ "src": "8970:21:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 34179,
+ "name": "Literal",
+ "src": "8992:1:96"
+ }
+ ],
+ "id": 34180,
+ "name": "FunctionCall",
+ "src": "8970:24:96"
+ }
+ ],
+ "id": 34181,
+ "name": "Assignment",
+ "src": "8950:44:96"
+ }
+ ],
+ "id": 34182,
+ "name": "ExpressionStatement",
+ "src": "8950:44:96"
+ }
+ ],
+ "id": 34183,
+ "name": "Block",
+ "src": "8644:359:96"
+ }
+ ],
+ "id": 34184,
+ "name": "ForStatement",
+ "src": "8576:427:96"
+ }
+ ],
+ "id": 34185,
+ "name": "Block",
+ "src": "8481:528:96"
+ }
+ ],
+ "id": 34186,
+ "name": "ForStatement",
+ "src": "8420:589:96"
+ },
+ {
+ "attributes": {
+ "functionReturnParameters": 34046
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "tuple(uint256[] memory,address[] memory,address[] memory,uint64[] memory,uint64[] memory)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34033,
+ "type": "uint256[] memory",
+ "value": "countsPerIssuer"
+ },
+ "id": 34187,
+ "name": "Identifier",
+ "src": "9022:15:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34036,
+ "type": "address[] memory",
+ "value": "accounts"
+ },
+ "id": 34188,
+ "name": "Identifier",
+ "src": "9039:8:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34039,
+ "type": "address[] memory",
+ "value": "signers"
+ },
+ "id": 34189,
+ "name": "Identifier",
+ "src": "9049:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34042,
+ "type": "uint64[] memory",
+ "value": "issuedOns"
+ },
+ "id": 34190,
+ "name": "Identifier",
+ "src": "9058:9:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34045,
+ "type": "uint64[] memory",
+ "value": "publishedOns"
+ },
+ "id": 34191,
+ "name": "Identifier",
+ "src": "9069:12:96"
+ }
+ ],
+ "id": 34192,
+ "name": "TupleExpression",
+ "src": "9021:61:96"
+ }
+ ],
+ "id": 34193,
+ "name": "Return",
+ "src": "9014:68:96"
+ }
+ ],
+ "id": 34194,
+ "name": "Block",
+ "src": "8007:1080:96"
+ }
+ ],
+ "id": 34195,
+ "name": "FunctionDefinition",
+ "src": "7707:1380:96"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Returns identifiers mapped to `account` by signers of `trustedIssuers`\n@param account Address of the account\n@param trustedIssuers Array of n issuers whose identifier mappings will be used\n@return countsPerIssuer Array of number of identifiers returned per issuer\n@return identifiers Array (length == sum([0])) of identifiers\n@dev Adds identifier info to the arrays in order of provided trustedIssuers\n@dev Expectation that only one attestation exists per (identifier, issuer, account)",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "lookupIdentifiers",
+ "scope": 34897,
+ "stateMutability": "view",
+ "superFunction": 36118,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "account",
+ "scope": 34302,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34196,
+ "name": "ElementaryTypeName",
+ "src": "9659:7:96"
+ }
+ ],
+ "id": 34197,
+ "name": "VariableDeclaration",
+ "src": "9659:15:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "trustedIssuers",
+ "scope": 34302,
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34198,
+ "name": "ElementaryTypeName",
+ "src": "9676:7:96"
+ }
+ ],
+ "id": 34199,
+ "name": "ArrayTypeName",
+ "src": "9676:9:96"
+ }
+ ],
+ "id": 34200,
+ "name": "VariableDeclaration",
+ "src": "9676:33:96"
+ }
+ ],
+ "id": 34201,
+ "name": "ParameterList",
+ "src": "9658:52:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "countsPerIssuer",
+ "scope": 34302,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "uint256[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "uint256[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34202,
+ "name": "ElementaryTypeName",
+ "src": "9746:7:96"
+ }
+ ],
+ "id": 34203,
+ "name": "ArrayTypeName",
+ "src": "9746:9:96"
+ }
+ ],
+ "id": 34204,
+ "name": "VariableDeclaration",
+ "src": "9746:32:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifiers",
+ "scope": 34302,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "bytes32[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "bytes32[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 34205,
+ "name": "ElementaryTypeName",
+ "src": "9780:7:96"
+ }
+ ],
+ "id": 34206,
+ "name": "ArrayTypeName",
+ "src": "9780:9:96"
+ }
+ ],
+ "id": 34207,
+ "name": "VariableDeclaration",
+ "src": "9780:28:96"
+ }
+ ],
+ "id": 34208,
+ "name": "ParameterList",
+ "src": "9745:64:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 34210
+ ],
+ "initialValue": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "totalIdentifiers",
+ "scope": 34301,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34209,
+ "name": "ElementaryTypeName",
+ "src": "9818:7:96"
+ }
+ ],
+ "id": 34210,
+ "name": "VariableDeclaration",
+ "src": "9818:24:96"
+ }
+ ],
+ "id": 34211,
+ "name": "VariableDeclarationStatement",
+ "src": "9818:24:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "tuple()"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "type": "tuple(uint256,uint256[] memory)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34210,
+ "type": "uint256",
+ "value": "totalIdentifiers"
+ },
+ "id": 34212,
+ "name": "Identifier",
+ "src": "9849:16:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34204,
+ "type": "uint256[] memory",
+ "value": "countsPerIssuer"
+ },
+ "id": 34213,
+ "name": "Identifier",
+ "src": "9867:15:96"
+ }
+ ],
+ "id": 34214,
+ "name": "TupleExpression",
+ "src": "9848:35:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple(uint256,uint256[] memory)",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34574,
+ "type": "function (address,address[] memory) view returns (uint256,uint256[] memory)",
+ "value": "getNumIdentifiers"
+ },
+ "id": 34215,
+ "name": "Identifier",
+ "src": "9886:17:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34197,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 34216,
+ "name": "Identifier",
+ "src": "9904:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34200,
+ "type": "address[] calldata",
+ "value": "trustedIssuers"
+ },
+ "id": 34217,
+ "name": "Identifier",
+ "src": "9913:14:96"
+ }
+ ],
+ "id": 34218,
+ "name": "FunctionCall",
+ "src": "9886:42:96"
+ }
+ ],
+ "id": 34219,
+ "name": "Assignment",
+ "src": "9848:80:96"
+ }
+ ],
+ "id": 34220,
+ "name": "ExpressionStatement",
+ "src": "9848:80:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "bytes32[] memory"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34207,
+ "type": "bytes32[] memory",
+ "value": "identifiers"
+ },
+ "id": 34221,
+ "name": "Identifier",
+ "src": "9935:11:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "bytes32[] memory",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "type": "function (uint256) pure returns (bytes32[] memory)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "bytes32[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 34222,
+ "name": "ElementaryTypeName",
+ "src": "9953:7:96"
+ }
+ ],
+ "id": 34223,
+ "name": "ArrayTypeName",
+ "src": "9953:9:96"
+ }
+ ],
+ "id": 34224,
+ "name": "NewExpression",
+ "src": "9949:13:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34210,
+ "type": "uint256",
+ "value": "totalIdentifiers"
+ },
+ "id": 34225,
+ "name": "Identifier",
+ "src": "9963:16:96"
+ }
+ ],
+ "id": 34226,
+ "name": "FunctionCall",
+ "src": "9949:31:96"
+ }
+ ],
+ "id": 34227,
+ "name": "Assignment",
+ "src": "9935:45:96"
+ }
+ ],
+ "id": 34228,
+ "name": "ExpressionStatement",
+ "src": "9935:45:96"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 34232
+ ],
+ "initialValue": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifiersPerIssuer",
+ "scope": 34301,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "bytes32[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "bytes32[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 34230,
+ "name": "ElementaryTypeName",
+ "src": "9986:7:96"
+ }
+ ],
+ "id": 34231,
+ "name": "ArrayTypeName",
+ "src": "9986:9:96"
+ }
+ ],
+ "id": 34232,
+ "name": "VariableDeclaration",
+ "src": "9986:37:96"
+ }
+ ],
+ "id": 34233,
+ "name": "VariableDeclarationStatement",
+ "src": "9986:37:96"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 34235
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "currIndex",
+ "scope": 34301,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34234,
+ "name": "ElementaryTypeName",
+ "src": "10030:7:96"
+ }
+ ],
+ "id": 34235,
+ "name": "VariableDeclaration",
+ "src": "10030:17:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 34236,
+ "name": "Literal",
+ "src": "10050:1:96"
+ }
+ ],
+ "id": 34237,
+ "name": "VariableDeclarationStatement",
+ "src": "10030:21:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 34239
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "i",
+ "scope": 34296,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34238,
+ "name": "ElementaryTypeName",
+ "src": "10063:7:96"
+ }
+ ],
+ "id": 34239,
+ "name": "VariableDeclaration",
+ "src": "10063:9:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 34240,
+ "name": "Literal",
+ "src": "10075:1:96"
+ }
+ ],
+ "id": 34241,
+ "name": "VariableDeclarationStatement",
+ "src": "10063:13:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "<",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34239,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34242,
+ "name": "Identifier",
+ "src": "10078:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34200,
+ "type": "address[] calldata",
+ "value": "trustedIssuers"
+ },
+ "id": 34243,
+ "name": "Identifier",
+ "src": "10082:14:96"
+ }
+ ],
+ "id": 34244,
+ "name": "MemberAccess",
+ "src": "10082:21:96"
+ }
+ ],
+ "id": 34245,
+ "name": "BinaryOperation",
+ "src": "10078:25:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34239,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34246,
+ "name": "Identifier",
+ "src": "10105:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34239,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34247,
+ "name": "Identifier",
+ "src": "10109:1:96"
+ }
+ ],
+ "id": 34248,
+ "name": "MemberAccess",
+ "src": "10109:5:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 34249,
+ "name": "Literal",
+ "src": "10115:1:96"
+ }
+ ],
+ "id": 34250,
+ "name": "FunctionCall",
+ "src": "10109:8:96"
+ }
+ ],
+ "id": 34251,
+ "name": "Assignment",
+ "src": "10105:12:96"
+ }
+ ],
+ "id": 34252,
+ "name": "ExpressionStatement",
+ "src": "10105:12:96"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "bytes32[] memory"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34232,
+ "type": "bytes32[] memory",
+ "value": "identifiersPerIssuer"
+ },
+ "id": 34253,
+ "name": "Identifier",
+ "src": "10127:20:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "bytes32[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "mapping(address => bytes32[] storage ref)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33768,
+ "type": "mapping(address => mapping(address => bytes32[] storage ref))",
+ "value": "addressToIdentifiers"
+ },
+ "id": 34254,
+ "name": "Identifier",
+ "src": "10150:20:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34197,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 34255,
+ "name": "Identifier",
+ "src": "10171:7:96"
+ }
+ ],
+ "id": 34256,
+ "name": "IndexAccess",
+ "src": "10150:29:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34200,
+ "type": "address[] calldata",
+ "value": "trustedIssuers"
+ },
+ "id": 34257,
+ "name": "Identifier",
+ "src": "10180:14:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34239,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34258,
+ "name": "Identifier",
+ "src": "10195:1:96"
+ }
+ ],
+ "id": 34259,
+ "name": "IndexAccess",
+ "src": "10180:17:96"
+ }
+ ],
+ "id": 34260,
+ "name": "IndexAccess",
+ "src": "10150:48:96"
+ }
+ ],
+ "id": 34261,
+ "name": "Assignment",
+ "src": "10127:71:96"
+ }
+ ],
+ "id": 34262,
+ "name": "ExpressionStatement",
+ "src": "10127:71:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 34264
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "j",
+ "scope": 34294,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34263,
+ "name": "ElementaryTypeName",
+ "src": "10211:7:96"
+ }
+ ],
+ "id": 34264,
+ "name": "VariableDeclaration",
+ "src": "10211:9:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 34265,
+ "name": "Literal",
+ "src": "10223:1:96"
+ }
+ ],
+ "id": 34266,
+ "name": "VariableDeclarationStatement",
+ "src": "10211:13:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "<",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34264,
+ "type": "uint256",
+ "value": "j"
+ },
+ "id": 34267,
+ "name": "Identifier",
+ "src": "10226:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34232,
+ "type": "bytes32[] memory",
+ "value": "identifiersPerIssuer"
+ },
+ "id": 34268,
+ "name": "Identifier",
+ "src": "10230:20:96"
+ }
+ ],
+ "id": 34269,
+ "name": "MemberAccess",
+ "src": "10230:27:96"
+ }
+ ],
+ "id": 34270,
+ "name": "BinaryOperation",
+ "src": "10226:31:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34264,
+ "type": "uint256",
+ "value": "j"
+ },
+ "id": 34271,
+ "name": "Identifier",
+ "src": "10259:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34264,
+ "type": "uint256",
+ "value": "j"
+ },
+ "id": 34272,
+ "name": "Identifier",
+ "src": "10263:1:96"
+ }
+ ],
+ "id": 34273,
+ "name": "MemberAccess",
+ "src": "10263:5:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 34274,
+ "name": "Literal",
+ "src": "10269:1:96"
+ }
+ ],
+ "id": 34275,
+ "name": "FunctionCall",
+ "src": "10263:8:96"
+ }
+ ],
+ "id": 34276,
+ "name": "Assignment",
+ "src": "10259:12:96"
+ }
+ ],
+ "id": 34277,
+ "name": "ExpressionStatement",
+ "src": "10259:12:96"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "bytes32"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "type": "bytes32"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34207,
+ "type": "bytes32[] memory",
+ "value": "identifiers"
+ },
+ "id": 34278,
+ "name": "Identifier",
+ "src": "10283:11:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34235,
+ "type": "uint256",
+ "value": "currIndex"
+ },
+ "id": 34279,
+ "name": "Identifier",
+ "src": "10295:9:96"
+ }
+ ],
+ "id": 34280,
+ "name": "IndexAccess",
+ "src": "10283:22:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "bytes32"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34232,
+ "type": "bytes32[] memory",
+ "value": "identifiersPerIssuer"
+ },
+ "id": 34281,
+ "name": "Identifier",
+ "src": "10308:20:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34264,
+ "type": "uint256",
+ "value": "j"
+ },
+ "id": 34282,
+ "name": "Identifier",
+ "src": "10329:1:96"
+ }
+ ],
+ "id": 34283,
+ "name": "IndexAccess",
+ "src": "10308:23:96"
+ }
+ ],
+ "id": 34284,
+ "name": "Assignment",
+ "src": "10283:48:96"
+ }
+ ],
+ "id": 34285,
+ "name": "ExpressionStatement",
+ "src": "10283:48:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34235,
+ "type": "uint256",
+ "value": "currIndex"
+ },
+ "id": 34286,
+ "name": "Identifier",
+ "src": "10341:9:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34235,
+ "type": "uint256",
+ "value": "currIndex"
+ },
+ "id": 34287,
+ "name": "Identifier",
+ "src": "10353:9:96"
+ }
+ ],
+ "id": 34288,
+ "name": "MemberAccess",
+ "src": "10353:13:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 34289,
+ "name": "Literal",
+ "src": "10367:1:96"
+ }
+ ],
+ "id": 34290,
+ "name": "FunctionCall",
+ "src": "10353:16:96"
+ }
+ ],
+ "id": 34291,
+ "name": "Assignment",
+ "src": "10341:28:96"
+ }
+ ],
+ "id": 34292,
+ "name": "ExpressionStatement",
+ "src": "10341:28:96"
+ }
+ ],
+ "id": 34293,
+ "name": "Block",
+ "src": "10273:105:96"
+ }
+ ],
+ "id": 34294,
+ "name": "ForStatement",
+ "src": "10206:172:96"
+ }
+ ],
+ "id": 34295,
+ "name": "Block",
+ "src": "10119:265:96"
+ }
+ ],
+ "id": 34296,
+ "name": "ForStatement",
+ "src": "10058:326:96"
+ },
+ {
+ "attributes": {
+ "functionReturnParameters": 34208
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "tuple(uint256[] memory,bytes32[] memory)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34204,
+ "type": "uint256[] memory",
+ "value": "countsPerIssuer"
+ },
+ "id": 34297,
+ "name": "Identifier",
+ "src": "10397:15:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34207,
+ "type": "bytes32[] memory",
+ "value": "identifiers"
+ },
+ "id": 34298,
+ "name": "Identifier",
+ "src": "10414:11:96"
+ }
+ ],
+ "id": 34299,
+ "name": "TupleExpression",
+ "src": "10396:30:96"
+ }
+ ],
+ "id": 34300,
+ "name": "Return",
+ "src": "10389:37:96"
+ }
+ ],
+ "id": 34301,
+ "name": "Block",
+ "src": "9812:619:96"
+ }
+ ],
+ "id": 34302,
+ "name": "FunctionDefinition",
+ "src": "9632:799:96"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Validates the given attestation and signature\n@param identifier Hash of the identifier to be attested\n@param issuer Address of the attestation issuer\n@param account Address of the account being mapped to the identifier\n@param issuedOn Time at which the issuer issued the attestation in Unix time \n@param signer Address of the signer of the attestation\n@param v The recovery id of the incoming ECDSA signature\n@param r Output value r of the ECDSA signature\n@param s Output value s of the ECDSA signature\n@dev Throws if attestation has been revoked\n@dev Throws if signer is not an authorized AttestationSigner of the issuer",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "validateAttestationSig",
+ "scope": 34897,
+ "stateMutability": "view",
+ "superFunction": 36137,
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifier",
+ "scope": 34361,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 34303,
+ "name": "ElementaryTypeName",
+ "src": "11169:7:96"
+ }
+ ],
+ "id": 34304,
+ "name": "VariableDeclaration",
+ "src": "11169:18:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "issuer",
+ "scope": 34361,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34305,
+ "name": "ElementaryTypeName",
+ "src": "11193:7:96"
+ }
+ ],
+ "id": 34306,
+ "name": "VariableDeclaration",
+ "src": "11193:14:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "account",
+ "scope": 34361,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34307,
+ "name": "ElementaryTypeName",
+ "src": "11213:7:96"
+ }
+ ],
+ "id": 34308,
+ "name": "VariableDeclaration",
+ "src": "11213:15:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "signer",
+ "scope": 34361,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34309,
+ "name": "ElementaryTypeName",
+ "src": "11234:7:96"
+ }
+ ],
+ "id": 34310,
+ "name": "VariableDeclaration",
+ "src": "11234:14:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "issuedOn",
+ "scope": 34361,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint64",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint64",
+ "type": "uint64"
+ },
+ "id": 34311,
+ "name": "ElementaryTypeName",
+ "src": "11254:6:96"
+ }
+ ],
+ "id": 34312,
+ "name": "VariableDeclaration",
+ "src": "11254:15:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "v",
+ "scope": 34361,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint8",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint8",
+ "type": "uint8"
+ },
+ "id": 34313,
+ "name": "ElementaryTypeName",
+ "src": "11275:5:96"
+ }
+ ],
+ "id": 34314,
+ "name": "VariableDeclaration",
+ "src": "11275:7:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "r",
+ "scope": 34361,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 34315,
+ "name": "ElementaryTypeName",
+ "src": "11288:7:96"
+ }
+ ],
+ "id": 34316,
+ "name": "VariableDeclaration",
+ "src": "11288:9:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "s",
+ "scope": 34361,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 34317,
+ "name": "ElementaryTypeName",
+ "src": "11303:7:96"
+ }
+ ],
+ "id": 34318,
+ "name": "VariableDeclaration",
+ "src": "11303:9:96"
+ }
+ ],
+ "id": 34319,
+ "name": "ParameterList",
+ "src": "11163:153:96"
+ },
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 34320,
+ "name": "ParameterList",
+ "src": "11329:0:96"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_0d0f603cad26b0a7f7c900175c42ace56258644b1a0b026654db55cca9775d61",
+ "typeString": "literal_string \"Signer is not a currently authorized AttestationSigner for the issuer\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 34321,
+ "name": "Identifier",
+ "src": "11432:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "==",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "address",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "attestationSignerToAccount",
+ "referencedDeclaration": 8839,
+ "type": "function (address) view external returns (address)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "arguments": [
+ null
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "contract IAccounts",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ null
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 8548,
+ "type": "function () view returns (contract IAccounts)",
+ "value": "getAccounts"
+ },
+ "id": 34322,
+ "name": "Identifier",
+ "src": "11447:11:96"
+ }
+ ],
+ "id": 34323,
+ "name": "FunctionCall",
+ "src": "11447:13:96"
+ }
+ ],
+ "id": 34324,
+ "name": "MemberAccess",
+ "src": "11447:40:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34310,
+ "type": "address",
+ "value": "signer"
+ },
+ "id": 34325,
+ "name": "Identifier",
+ "src": "11488:6:96"
+ }
+ ],
+ "id": 34326,
+ "name": "FunctionCall",
+ "src": "11447:48:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34306,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 34327,
+ "name": "Identifier",
+ "src": "11499:6:96"
+ }
+ ],
+ "id": 34328,
+ "name": "BinaryOperation",
+ "src": "11447:58:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "5369676e6572206973206e6f7420612063757272656e746c7920617574686f72697a6564204174746573746174696f6e5369676e657220666f722074686520697373756572",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"Signer is not a currently authorized AttestationSigner for the issuer\"",
+ "value": "Signer is not a currently authorized AttestationSigner for the issuer"
+ },
+ "id": 34329,
+ "name": "Literal",
+ "src": "11513:71:96"
+ }
+ ],
+ "id": 34330,
+ "name": "FunctionCall",
+ "src": "11432:158:96"
+ }
+ ],
+ "id": 34331,
+ "name": "ExpressionStatement",
+ "src": "11432:158:96"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 34333
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "structHash",
+ "scope": 34360,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 34332,
+ "name": "ElementaryTypeName",
+ "src": "11596:7:96"
+ }
+ ],
+ "id": 34333,
+ "name": "VariableDeclaration",
+ "src": "11596:18:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "bytes32",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34389,
+ "type": "function (bytes32,address,address,address,uint64) pure returns (bytes32)",
+ "value": "getUniqueAttestationHash"
+ },
+ "id": 34334,
+ "name": "Identifier",
+ "src": "11617:24:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34304,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 34335,
+ "name": "Identifier",
+ "src": "11642:10:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34306,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 34336,
+ "name": "Identifier",
+ "src": "11654:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34308,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 34337,
+ "name": "Identifier",
+ "src": "11662:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34310,
+ "type": "address",
+ "value": "signer"
+ },
+ "id": 34338,
+ "name": "Identifier",
+ "src": "11671:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34312,
+ "type": "uint64",
+ "value": "issuedOn"
+ },
+ "id": 34339,
+ "name": "Identifier",
+ "src": "11679:8:96"
+ }
+ ],
+ "id": 34340,
+ "name": "FunctionCall",
+ "src": "11617:71:96"
+ }
+ ],
+ "id": 34341,
+ "name": "VariableDeclarationStatement",
+ "src": "11596:92:96"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 34343
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "guessedSigner",
+ "scope": 34360,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34342,
+ "name": "ElementaryTypeName",
+ "src": "11694:7:96"
+ }
+ ],
+ "id": 34343,
+ "name": "VariableDeclaration",
+ "src": "11694:21:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "address",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "getSignerOfTypedDataHash",
+ "referencedDeclaration": 6901,
+ "type": "function (bytes32,bytes32,uint8,bytes32,bytes32) pure returns (address)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 6902,
+ "type": "type(library Signatures)",
+ "value": "Signatures"
+ },
+ "id": 34344,
+ "name": "Identifier",
+ "src": "11718:10:96"
+ }
+ ],
+ "id": 34345,
+ "name": "MemberAccess",
+ "src": "11718:35:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33774,
+ "type": "bytes32",
+ "value": "eip712DomainSeparator"
+ },
+ "id": 34346,
+ "name": "Identifier",
+ "src": "11761:21:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34333,
+ "type": "bytes32",
+ "value": "structHash"
+ },
+ "id": 34347,
+ "name": "Identifier",
+ "src": "11790:10:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34314,
+ "type": "uint8",
+ "value": "v"
+ },
+ "id": 34348,
+ "name": "Identifier",
+ "src": "11808:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34316,
+ "type": "bytes32",
+ "value": "r"
+ },
+ "id": 34349,
+ "name": "Identifier",
+ "src": "11817:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34318,
+ "type": "bytes32",
+ "value": "s"
+ },
+ "id": 34350,
+ "name": "Identifier",
+ "src": "11826:1:96"
+ }
+ ],
+ "id": 34351,
+ "name": "FunctionCall",
+ "src": "11718:115:96"
+ }
+ ],
+ "id": 34352,
+ "name": "VariableDeclarationStatement",
+ "src": "11694:139:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_7d2f6f5fa261eb0ccc45f72c25844aab84ce43b7439d406df0dc6e1abf359a1f",
+ "typeString": "literal_string \"Signature is invalid\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 34353,
+ "name": "Identifier",
+ "src": "11839:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "==",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34343,
+ "type": "address",
+ "value": "guessedSigner"
+ },
+ "id": 34354,
+ "name": "Identifier",
+ "src": "11847:13:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34310,
+ "type": "address",
+ "value": "signer"
+ },
+ "id": 34355,
+ "name": "Identifier",
+ "src": "11864:6:96"
+ }
+ ],
+ "id": 34356,
+ "name": "BinaryOperation",
+ "src": "11847:23:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "5369676e617475726520697320696e76616c6964",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"Signature is invalid\"",
+ "value": "Signature is invalid"
+ },
+ "id": 34357,
+ "name": "Literal",
+ "src": "11872:22:96"
+ }
+ ],
+ "id": 34358,
+ "name": "FunctionCall",
+ "src": "11839:56:96"
+ }
+ ],
+ "id": 34359,
+ "name": "ExpressionStatement",
+ "src": "11839:56:96"
+ }
+ ],
+ "id": 34360,
+ "name": "Block",
+ "src": "11329:571:96"
+ }
+ ],
+ "id": 34361,
+ "name": "FunctionDefinition",
+ "src": "11132:768:96"
+ },
+ {
+ "attributes": {
+ "documentation": null,
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "getUniqueAttestationHash",
+ "scope": 34897,
+ "stateMutability": "pure",
+ "superFunction": 36152,
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifier",
+ "scope": 34389,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 34362,
+ "name": "ElementaryTypeName",
+ "src": "11943:7:96"
+ }
+ ],
+ "id": 34363,
+ "name": "VariableDeclaration",
+ "src": "11943:18:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "issuer",
+ "scope": 34389,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34364,
+ "name": "ElementaryTypeName",
+ "src": "11967:7:96"
+ }
+ ],
+ "id": 34365,
+ "name": "VariableDeclaration",
+ "src": "11967:14:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "account",
+ "scope": 34389,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34366,
+ "name": "ElementaryTypeName",
+ "src": "11987:7:96"
+ }
+ ],
+ "id": 34367,
+ "name": "VariableDeclaration",
+ "src": "11987:15:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "signer",
+ "scope": 34389,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34368,
+ "name": "ElementaryTypeName",
+ "src": "12008:7:96"
+ }
+ ],
+ "id": 34369,
+ "name": "VariableDeclaration",
+ "src": "12008:14:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "issuedOn",
+ "scope": 34389,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint64",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint64",
+ "type": "uint64"
+ },
+ "id": 34370,
+ "name": "ElementaryTypeName",
+ "src": "12028:6:96"
+ }
+ ],
+ "id": 34371,
+ "name": "VariableDeclaration",
+ "src": "12028:15:96"
+ }
+ ],
+ "id": 34372,
+ "name": "ParameterList",
+ "src": "11937:110:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 34389,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 34373,
+ "name": "ElementaryTypeName",
+ "src": "12069:7:96"
+ }
+ ],
+ "id": 34374,
+ "name": "VariableDeclaration",
+ "src": "12069:7:96"
+ }
+ ],
+ "id": 34375,
+ "name": "ParameterList",
+ "src": "12068:9:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "functionReturnParameters": 34375
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "bytes32",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42900,
+ "type": "function (bytes memory) pure returns (bytes32)",
+ "value": "keccak256"
+ },
+ "id": 34376,
+ "name": "Identifier",
+ "src": "12097:9:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "bytes memory",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "member_name": "encode",
+ "referencedDeclaration": null,
+ "type": "function () pure returns (bytes memory)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42893,
+ "type": "abi",
+ "value": "abi"
+ },
+ "id": 34377,
+ "name": "Identifier",
+ "src": "12116:3:96"
+ }
+ ],
+ "id": 34378,
+ "name": "MemberAccess",
+ "src": "12116:10:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33783,
+ "type": "bytes32",
+ "value": "EIP712_OWNERSHIP_ATTESTATION_TYPEHASH"
+ },
+ "id": 34379,
+ "name": "Identifier",
+ "src": "12138:37:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34363,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 34380,
+ "name": "Identifier",
+ "src": "12187:10:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34365,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 34381,
+ "name": "Identifier",
+ "src": "12209:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34367,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 34382,
+ "name": "Identifier",
+ "src": "12227:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34369,
+ "type": "address",
+ "value": "signer"
+ },
+ "id": 34383,
+ "name": "Identifier",
+ "src": "12246:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34371,
+ "type": "uint64",
+ "value": "issuedOn"
+ },
+ "id": 34384,
+ "name": "Identifier",
+ "src": "12264:8:96"
+ }
+ ],
+ "id": 34385,
+ "name": "FunctionCall",
+ "src": "12116:166:96"
+ }
+ ],
+ "id": 34386,
+ "name": "FunctionCall",
+ "src": "12097:193:96"
+ }
+ ],
+ "id": 34387,
+ "name": "Return",
+ "src": "12084:206:96"
+ }
+ ],
+ "id": 34388,
+ "name": "Block",
+ "src": "12078:217:96"
+ }
+ ],
+ "id": 34389,
+ "name": "FunctionDefinition",
+ "src": "11904:391:96"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Sets the EIP712 domain separator for the Celo FederatedAttestations abstraction.",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "setEip712DomainSeparator",
+ "scope": 34897,
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 34390,
+ "name": "ParameterList",
+ "src": "12438:2:96"
+ },
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 34391,
+ "name": "ParameterList",
+ "src": "12450:0:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 34393
+ ],
+ "initialValue": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "chainId",
+ "scope": 34423,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34392,
+ "name": "ElementaryTypeName",
+ "src": "12456:7:96"
+ }
+ ],
+ "id": 34393,
+ "name": "VariableDeclaration",
+ "src": "12456:15:96"
+ }
+ ],
+ "id": 34394,
+ "name": "VariableDeclarationStatement",
+ "src": "12456:15:96"
+ },
+ {
+ "attributes": {
+ "externalReferences": [
+ {
+ "chainId": {
+ "declaration": 34393,
+ "isOffset": false,
+ "isSlot": false,
+ "src": "12494:7:96",
+ "valueSize": 1
+ }
+ }
+ ],
+ "operations": "{ chainId := chainid() }"
+ },
+ "children": [],
+ "id": 34395,
+ "name": "InlineAssembly",
+ "src": "12477:41:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "bytes32"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33774,
+ "type": "bytes32",
+ "value": "eip712DomainSeparator"
+ },
+ "id": 34396,
+ "name": "Identifier",
+ "src": "12524:21:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "bytes32",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42900,
+ "type": "function (bytes memory) pure returns (bytes32)",
+ "value": "keccak256"
+ },
+ "id": 34397,
+ "name": "Identifier",
+ "src": "12548:9:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "bytes memory",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "member_name": "encode",
+ "referencedDeclaration": null,
+ "type": "function () pure returns (bytes memory)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42893,
+ "type": "abi",
+ "value": "abi"
+ },
+ "id": 34398,
+ "name": "Identifier",
+ "src": "12565:3:96"
+ }
+ ],
+ "id": 34399,
+ "name": "MemberAccess",
+ "src": "12565:10:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "bytes32",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
+ "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42900,
+ "type": "function (bytes memory) pure returns (bytes32)",
+ "value": "keccak256"
+ },
+ "id": 34400,
+ "name": "Identifier",
+ "src": "12585:9:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"",
+ "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
+ },
+ "id": 34401,
+ "name": "Literal",
+ "src": "12606:84:96"
+ }
+ ],
+ "id": 34402,
+ "name": "FunctionCall",
+ "src": "12585:115:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "bytes32",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42900,
+ "type": "function (bytes memory) pure returns (bytes32)",
+ "value": "keccak256"
+ },
+ "id": 34403,
+ "name": "Identifier",
+ "src": "12710:9:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "bytes memory",
+ "type_conversion": true
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_96f361fc4a5274cd642d269ced6f361149b691a1e8bf7016d8bdfe6cae9adc75",
+ "typeString": "literal_string \"FederatedAttestations\""
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "type": "type(bytes storage pointer)",
+ "value": "bytes"
+ },
+ "id": 34404,
+ "name": "ElementaryTypeNameExpression",
+ "src": "12720:5:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "4665646572617465644174746573746174696f6e73",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"FederatedAttestations\"",
+ "value": "FederatedAttestations"
+ },
+ "id": 34405,
+ "name": "Literal",
+ "src": "12726:23:96"
+ }
+ ],
+ "id": 34406,
+ "name": "FunctionCall",
+ "src": "12720:30:96"
+ }
+ ],
+ "id": 34407,
+ "name": "FunctionCall",
+ "src": "12710:41:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "bytes32",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_e6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b3",
+ "typeString": "literal_string \"1.0\""
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42900,
+ "type": "function (bytes memory) pure returns (bytes32)",
+ "value": "keccak256"
+ },
+ "id": 34408,
+ "name": "Identifier",
+ "src": "12761:9:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "312e30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"1.0\"",
+ "value": "1.0"
+ },
+ "id": 34409,
+ "name": "Literal",
+ "src": "12771:5:96"
+ }
+ ],
+ "id": 34410,
+ "name": "FunctionCall",
+ "src": "12761:16:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34393,
+ "type": "uint256",
+ "value": "chainId"
+ },
+ "id": 34411,
+ "name": "Identifier",
+ "src": "12787:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "address",
+ "type_conversion": true
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_contract$_FederatedAttestations_$34897",
+ "typeString": "contract FederatedAttestations"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "type": "type(address)",
+ "value": "address"
+ },
+ "id": 34412,
+ "name": "ElementaryTypeNameExpression",
+ "src": "12804:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 43128,
+ "type": "contract FederatedAttestations",
+ "value": "this"
+ },
+ "id": 34413,
+ "name": "Identifier",
+ "src": "12812:4:96"
+ }
+ ],
+ "id": 34414,
+ "name": "FunctionCall",
+ "src": "12804:13:96"
+ }
+ ],
+ "id": 34415,
+ "name": "FunctionCall",
+ "src": "12565:260:96"
+ }
+ ],
+ "id": 34416,
+ "name": "FunctionCall",
+ "src": "12548:283:96"
+ }
+ ],
+ "id": 34417,
+ "name": "Assignment",
+ "src": "12524:307:96"
+ }
+ ],
+ "id": 34418,
+ "name": "ExpressionStatement",
+ "src": "12524:307:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33793,
+ "type": "function (bytes32)",
+ "value": "EIP712DomainSeparatorSet"
+ },
+ "id": 34419,
+ "name": "Identifier",
+ "src": "12842:24:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33774,
+ "type": "bytes32",
+ "value": "eip712DomainSeparator"
+ },
+ "id": 34420,
+ "name": "Identifier",
+ "src": "12867:21:96"
+ }
+ ],
+ "id": 34421,
+ "name": "FunctionCall",
+ "src": "12842:47:96"
+ }
+ ],
+ "id": 34422,
+ "name": "EmitStatement",
+ "src": "12837:52:96"
+ }
+ ],
+ "id": 34423,
+ "name": "Block",
+ "src": "12450:444:96"
+ }
+ ],
+ "id": 34424,
+ "name": "FunctionDefinition",
+ "src": "12405:489:96"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Helper function for lookupAttestations to calculate the\ntotal number of attestations completed for an identifier\nby each trusted issuer\n@param identifier Hash of the identifier\n@param trustedIssuers Array of n issuers whose attestations will be included\n@return totalAttestations Sum total of attestations found\n@return countsPerIssuer Array of number of attestations found per issuer",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "getNumAttestations",
+ "scope": 34897,
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifier",
+ "scope": 34499,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 34425,
+ "name": "ElementaryTypeName",
+ "src": "13382:7:96"
+ }
+ ],
+ "id": 34426,
+ "name": "VariableDeclaration",
+ "src": "13382:18:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "trustedIssuers",
+ "scope": 34499,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34427,
+ "name": "ElementaryTypeName",
+ "src": "13402:7:96"
+ }
+ ],
+ "id": 34428,
+ "name": "ArrayTypeName",
+ "src": "13402:9:96"
+ }
+ ],
+ "id": 34429,
+ "name": "VariableDeclaration",
+ "src": "13402:31:96"
+ }
+ ],
+ "id": 34430,
+ "name": "ParameterList",
+ "src": "13381:53:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "totalAttestations",
+ "scope": 34499,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34431,
+ "name": "ElementaryTypeName",
+ "src": "13470:7:96"
+ }
+ ],
+ "id": 34432,
+ "name": "VariableDeclaration",
+ "src": "13470:25:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "countsPerIssuer",
+ "scope": 34499,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "uint256[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "uint256[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34433,
+ "name": "ElementaryTypeName",
+ "src": "13497:7:96"
+ }
+ ],
+ "id": 34434,
+ "name": "ArrayTypeName",
+ "src": "13497:9:96"
+ }
+ ],
+ "id": 34435,
+ "name": "VariableDeclaration",
+ "src": "13497:32:96"
+ }
+ ],
+ "id": 34436,
+ "name": "ParameterList",
+ "src": "13469:61:96"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34432,
+ "type": "uint256",
+ "value": "totalAttestations"
+ },
+ "id": 34437,
+ "name": "Identifier",
+ "src": "13539:17:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 34438,
+ "name": "Literal",
+ "src": "13559:1:96"
+ }
+ ],
+ "id": 34439,
+ "name": "Assignment",
+ "src": "13539:21:96"
+ }
+ ],
+ "id": 34440,
+ "name": "ExpressionStatement",
+ "src": "13539:21:96"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 34442
+ ],
+ "initialValue": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "numAttestationsForIssuer",
+ "scope": 34498,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34441,
+ "name": "ElementaryTypeName",
+ "src": "13566:7:96"
+ }
+ ],
+ "id": 34442,
+ "name": "VariableDeclaration",
+ "src": "13566:32:96"
+ }
+ ],
+ "id": 34443,
+ "name": "VariableDeclarationStatement",
+ "src": "13566:32:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256[] memory"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34435,
+ "type": "uint256[] memory",
+ "value": "countsPerIssuer"
+ },
+ "id": 34444,
+ "name": "Identifier",
+ "src": "13604:15:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256[] memory",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "type": "function (uint256) pure returns (uint256[] memory)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "uint256[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34445,
+ "name": "ElementaryTypeName",
+ "src": "13626:7:96"
+ }
+ ],
+ "id": 34446,
+ "name": "ArrayTypeName",
+ "src": "13626:9:96"
+ }
+ ],
+ "id": 34447,
+ "name": "NewExpression",
+ "src": "13622:13:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34429,
+ "type": "address[] memory",
+ "value": "trustedIssuers"
+ },
+ "id": 34448,
+ "name": "Identifier",
+ "src": "13636:14:96"
+ }
+ ],
+ "id": 34449,
+ "name": "MemberAccess",
+ "src": "13636:21:96"
+ }
+ ],
+ "id": 34450,
+ "name": "FunctionCall",
+ "src": "13622:36:96"
+ }
+ ],
+ "id": 34451,
+ "name": "Assignment",
+ "src": "13604:54:96"
+ }
+ ],
+ "id": 34452,
+ "name": "ExpressionStatement",
+ "src": "13604:54:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 34454
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "i",
+ "scope": 34493,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34453,
+ "name": "ElementaryTypeName",
+ "src": "13670:7:96"
+ }
+ ],
+ "id": 34454,
+ "name": "VariableDeclaration",
+ "src": "13670:9:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 34455,
+ "name": "Literal",
+ "src": "13682:1:96"
+ }
+ ],
+ "id": 34456,
+ "name": "VariableDeclarationStatement",
+ "src": "13670:13:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "<",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34454,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34457,
+ "name": "Identifier",
+ "src": "13685:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34429,
+ "type": "address[] memory",
+ "value": "trustedIssuers"
+ },
+ "id": 34458,
+ "name": "Identifier",
+ "src": "13689:14:96"
+ }
+ ],
+ "id": 34459,
+ "name": "MemberAccess",
+ "src": "13689:21:96"
+ }
+ ],
+ "id": 34460,
+ "name": "BinaryOperation",
+ "src": "13685:25:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34454,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34461,
+ "name": "Identifier",
+ "src": "13712:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34454,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34462,
+ "name": "Identifier",
+ "src": "13716:1:96"
+ }
+ ],
+ "id": 34463,
+ "name": "MemberAccess",
+ "src": "13716:5:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 34464,
+ "name": "Literal",
+ "src": "13722:1:96"
+ }
+ ],
+ "id": 34465,
+ "name": "FunctionCall",
+ "src": "13716:8:96"
+ }
+ ],
+ "id": 34466,
+ "name": "Assignment",
+ "src": "13712:12:96"
+ }
+ ],
+ "id": 34467,
+ "name": "ExpressionStatement",
+ "src": "13712:12:96"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34442,
+ "type": "uint256",
+ "value": "numAttestationsForIssuer"
+ },
+ "id": 34468,
+ "name": "Identifier",
+ "src": "13734:24:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33761,
+ "type": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))",
+ "value": "identifierToAttestations"
+ },
+ "id": 34469,
+ "name": "Identifier",
+ "src": "13761:24:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34426,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 34470,
+ "name": "Identifier",
+ "src": "13786:10:96"
+ }
+ ],
+ "id": 34471,
+ "name": "IndexAccess",
+ "src": "13761:36:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34429,
+ "type": "address[] memory",
+ "value": "trustedIssuers"
+ },
+ "id": 34472,
+ "name": "Identifier",
+ "src": "13798:14:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34454,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34473,
+ "name": "Identifier",
+ "src": "13813:1:96"
+ }
+ ],
+ "id": 34474,
+ "name": "IndexAccess",
+ "src": "13798:17:96"
+ }
+ ],
+ "id": 34475,
+ "name": "IndexAccess",
+ "src": "13761:55:96"
+ }
+ ],
+ "id": 34476,
+ "name": "MemberAccess",
+ "src": "13761:62:96"
+ }
+ ],
+ "id": 34477,
+ "name": "Assignment",
+ "src": "13734:89:96"
+ }
+ ],
+ "id": 34478,
+ "name": "ExpressionStatement",
+ "src": "13734:89:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34432,
+ "type": "uint256",
+ "value": "totalAttestations"
+ },
+ "id": 34479,
+ "name": "Identifier",
+ "src": "13831:17:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34432,
+ "type": "uint256",
+ "value": "totalAttestations"
+ },
+ "id": 34480,
+ "name": "Identifier",
+ "src": "13851:17:96"
+ }
+ ],
+ "id": 34481,
+ "name": "MemberAccess",
+ "src": "13851:21:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34442,
+ "type": "uint256",
+ "value": "numAttestationsForIssuer"
+ },
+ "id": 34482,
+ "name": "Identifier",
+ "src": "13873:24:96"
+ }
+ ],
+ "id": 34483,
+ "name": "FunctionCall",
+ "src": "13851:47:96"
+ }
+ ],
+ "id": 34484,
+ "name": "Assignment",
+ "src": "13831:67:96"
+ }
+ ],
+ "id": 34485,
+ "name": "ExpressionStatement",
+ "src": "13831:67:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34435,
+ "type": "uint256[] memory",
+ "value": "countsPerIssuer"
+ },
+ "id": 34486,
+ "name": "Identifier",
+ "src": "13906:15:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34454,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34487,
+ "name": "Identifier",
+ "src": "13922:1:96"
+ }
+ ],
+ "id": 34488,
+ "name": "IndexAccess",
+ "src": "13906:18:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34442,
+ "type": "uint256",
+ "value": "numAttestationsForIssuer"
+ },
+ "id": 34489,
+ "name": "Identifier",
+ "src": "13927:24:96"
+ }
+ ],
+ "id": 34490,
+ "name": "Assignment",
+ "src": "13906:45:96"
+ }
+ ],
+ "id": 34491,
+ "name": "ExpressionStatement",
+ "src": "13906:45:96"
+ }
+ ],
+ "id": 34492,
+ "name": "Block",
+ "src": "13726:232:96"
+ }
+ ],
+ "id": 34493,
+ "name": "ForStatement",
+ "src": "13665:293:96"
+ },
+ {
+ "attributes": {
+ "functionReturnParameters": 34436
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "tuple(uint256,uint256[] memory)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34432,
+ "type": "uint256",
+ "value": "totalAttestations"
+ },
+ "id": 34494,
+ "name": "Identifier",
+ "src": "13971:17:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34435,
+ "type": "uint256[] memory",
+ "value": "countsPerIssuer"
+ },
+ "id": 34495,
+ "name": "Identifier",
+ "src": "13990:15:96"
+ }
+ ],
+ "id": 34496,
+ "name": "TupleExpression",
+ "src": "13970:36:96"
+ }
+ ],
+ "id": 34497,
+ "name": "Return",
+ "src": "13963:43:96"
+ }
+ ],
+ "id": 34498,
+ "name": "Block",
+ "src": "13533:478:96"
+ }
+ ],
+ "id": 34499,
+ "name": "FunctionDefinition",
+ "src": "13354:657:96"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Helper function for lookupIdentifiers to calculate the\ntotal number of identifiers completed for an identifier\nby each trusted issuer\n@param account Address of the account\n@param trustedIssuers Array of n issuers whose identifiers will be included\n@return totalIdentifiers Sum total of identifiers found\n@return countsPerIssuer Array of number of identifiers found per issuer",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "getNumIdentifiers",
+ "scope": 34897,
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "account",
+ "scope": 34574,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34500,
+ "name": "ElementaryTypeName",
+ "src": "14489:7:96"
+ }
+ ],
+ "id": 34501,
+ "name": "VariableDeclaration",
+ "src": "14489:15:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "trustedIssuers",
+ "scope": 34574,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "address[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "address[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34502,
+ "name": "ElementaryTypeName",
+ "src": "14506:7:96"
+ }
+ ],
+ "id": 34503,
+ "name": "ArrayTypeName",
+ "src": "14506:9:96"
+ }
+ ],
+ "id": 34504,
+ "name": "VariableDeclaration",
+ "src": "14506:31:96"
+ }
+ ],
+ "id": 34505,
+ "name": "ParameterList",
+ "src": "14488:50:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "totalIdentifiers",
+ "scope": 34574,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34506,
+ "name": "ElementaryTypeName",
+ "src": "14574:7:96"
+ }
+ ],
+ "id": 34507,
+ "name": "VariableDeclaration",
+ "src": "14574:24:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "countsPerIssuer",
+ "scope": 34574,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "uint256[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "uint256[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34508,
+ "name": "ElementaryTypeName",
+ "src": "14600:7:96"
+ }
+ ],
+ "id": 34509,
+ "name": "ArrayTypeName",
+ "src": "14600:9:96"
+ }
+ ],
+ "id": 34510,
+ "name": "VariableDeclaration",
+ "src": "14600:32:96"
+ }
+ ],
+ "id": 34511,
+ "name": "ParameterList",
+ "src": "14573:60:96"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34507,
+ "type": "uint256",
+ "value": "totalIdentifiers"
+ },
+ "id": 34512,
+ "name": "Identifier",
+ "src": "14642:16:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 34513,
+ "name": "Literal",
+ "src": "14661:1:96"
+ }
+ ],
+ "id": 34514,
+ "name": "Assignment",
+ "src": "14642:20:96"
+ }
+ ],
+ "id": 34515,
+ "name": "ExpressionStatement",
+ "src": "14642:20:96"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 34517
+ ],
+ "initialValue": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "numIdentifiersForIssuer",
+ "scope": 34573,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34516,
+ "name": "ElementaryTypeName",
+ "src": "14668:7:96"
+ }
+ ],
+ "id": 34517,
+ "name": "VariableDeclaration",
+ "src": "14668:31:96"
+ }
+ ],
+ "id": 34518,
+ "name": "VariableDeclarationStatement",
+ "src": "14668:31:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256[] memory"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34510,
+ "type": "uint256[] memory",
+ "value": "countsPerIssuer"
+ },
+ "id": 34519,
+ "name": "Identifier",
+ "src": "14705:15:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256[] memory",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "type": "function (uint256) pure returns (uint256[] memory)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "uint256[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34520,
+ "name": "ElementaryTypeName",
+ "src": "14727:7:96"
+ }
+ ],
+ "id": 34521,
+ "name": "ArrayTypeName",
+ "src": "14727:9:96"
+ }
+ ],
+ "id": 34522,
+ "name": "NewExpression",
+ "src": "14723:13:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34504,
+ "type": "address[] memory",
+ "value": "trustedIssuers"
+ },
+ "id": 34523,
+ "name": "Identifier",
+ "src": "14737:14:96"
+ }
+ ],
+ "id": 34524,
+ "name": "MemberAccess",
+ "src": "14737:21:96"
+ }
+ ],
+ "id": 34525,
+ "name": "FunctionCall",
+ "src": "14723:36:96"
+ }
+ ],
+ "id": 34526,
+ "name": "Assignment",
+ "src": "14705:54:96"
+ }
+ ],
+ "id": 34527,
+ "name": "ExpressionStatement",
+ "src": "14705:54:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 34529
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "i",
+ "scope": 34568,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34528,
+ "name": "ElementaryTypeName",
+ "src": "14771:7:96"
+ }
+ ],
+ "id": 34529,
+ "name": "VariableDeclaration",
+ "src": "14771:9:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 34530,
+ "name": "Literal",
+ "src": "14783:1:96"
+ }
+ ],
+ "id": 34531,
+ "name": "VariableDeclarationStatement",
+ "src": "14771:13:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "<",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34529,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34532,
+ "name": "Identifier",
+ "src": "14786:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34504,
+ "type": "address[] memory",
+ "value": "trustedIssuers"
+ },
+ "id": 34533,
+ "name": "Identifier",
+ "src": "14790:14:96"
+ }
+ ],
+ "id": 34534,
+ "name": "MemberAccess",
+ "src": "14790:21:96"
+ }
+ ],
+ "id": 34535,
+ "name": "BinaryOperation",
+ "src": "14786:25:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34529,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34536,
+ "name": "Identifier",
+ "src": "14813:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34529,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34537,
+ "name": "Identifier",
+ "src": "14817:1:96"
+ }
+ ],
+ "id": 34538,
+ "name": "MemberAccess",
+ "src": "14817:5:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 34539,
+ "name": "Literal",
+ "src": "14823:1:96"
+ }
+ ],
+ "id": 34540,
+ "name": "FunctionCall",
+ "src": "14817:8:96"
+ }
+ ],
+ "id": 34541,
+ "name": "Assignment",
+ "src": "14813:12:96"
+ }
+ ],
+ "id": 34542,
+ "name": "ExpressionStatement",
+ "src": "14813:12:96"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34517,
+ "type": "uint256",
+ "value": "numIdentifiersForIssuer"
+ },
+ "id": 34543,
+ "name": "Identifier",
+ "src": "14835:23:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "bytes32[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "mapping(address => bytes32[] storage ref)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33768,
+ "type": "mapping(address => mapping(address => bytes32[] storage ref))",
+ "value": "addressToIdentifiers"
+ },
+ "id": 34544,
+ "name": "Identifier",
+ "src": "14861:20:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34501,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 34545,
+ "name": "Identifier",
+ "src": "14882:7:96"
+ }
+ ],
+ "id": 34546,
+ "name": "IndexAccess",
+ "src": "14861:29:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34504,
+ "type": "address[] memory",
+ "value": "trustedIssuers"
+ },
+ "id": 34547,
+ "name": "Identifier",
+ "src": "14891:14:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34529,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34548,
+ "name": "Identifier",
+ "src": "14906:1:96"
+ }
+ ],
+ "id": 34549,
+ "name": "IndexAccess",
+ "src": "14891:17:96"
+ }
+ ],
+ "id": 34550,
+ "name": "IndexAccess",
+ "src": "14861:48:96"
+ }
+ ],
+ "id": 34551,
+ "name": "MemberAccess",
+ "src": "14861:55:96"
+ }
+ ],
+ "id": 34552,
+ "name": "Assignment",
+ "src": "14835:81:96"
+ }
+ ],
+ "id": 34553,
+ "name": "ExpressionStatement",
+ "src": "14835:81:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34507,
+ "type": "uint256",
+ "value": "totalIdentifiers"
+ },
+ "id": 34554,
+ "name": "Identifier",
+ "src": "14924:16:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34507,
+ "type": "uint256",
+ "value": "totalIdentifiers"
+ },
+ "id": 34555,
+ "name": "Identifier",
+ "src": "14943:16:96"
+ }
+ ],
+ "id": 34556,
+ "name": "MemberAccess",
+ "src": "14943:20:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34517,
+ "type": "uint256",
+ "value": "numIdentifiersForIssuer"
+ },
+ "id": 34557,
+ "name": "Identifier",
+ "src": "14964:23:96"
+ }
+ ],
+ "id": 34558,
+ "name": "FunctionCall",
+ "src": "14943:45:96"
+ }
+ ],
+ "id": 34559,
+ "name": "Assignment",
+ "src": "14924:64:96"
+ }
+ ],
+ "id": 34560,
+ "name": "ExpressionStatement",
+ "src": "14924:64:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34510,
+ "type": "uint256[] memory",
+ "value": "countsPerIssuer"
+ },
+ "id": 34561,
+ "name": "Identifier",
+ "src": "14996:15:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34529,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34562,
+ "name": "Identifier",
+ "src": "15012:1:96"
+ }
+ ],
+ "id": 34563,
+ "name": "IndexAccess",
+ "src": "14996:18:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34517,
+ "type": "uint256",
+ "value": "numIdentifiersForIssuer"
+ },
+ "id": 34564,
+ "name": "Identifier",
+ "src": "15017:23:96"
+ }
+ ],
+ "id": 34565,
+ "name": "Assignment",
+ "src": "14996:44:96"
+ }
+ ],
+ "id": 34566,
+ "name": "ExpressionStatement",
+ "src": "14996:44:96"
+ }
+ ],
+ "id": 34567,
+ "name": "Block",
+ "src": "14827:220:96"
+ }
+ ],
+ "id": 34568,
+ "name": "ForStatement",
+ "src": "14766:281:96"
+ },
+ {
+ "attributes": {
+ "functionReturnParameters": 34511
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "tuple(uint256,uint256[] memory)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34507,
+ "type": "uint256",
+ "value": "totalIdentifiers"
+ },
+ "id": 34569,
+ "name": "Identifier",
+ "src": "15060:16:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34510,
+ "type": "uint256[] memory",
+ "value": "countsPerIssuer"
+ },
+ "id": 34570,
+ "name": "Identifier",
+ "src": "15078:15:96"
+ }
+ ],
+ "id": 34571,
+ "name": "TupleExpression",
+ "src": "15059:35:96"
+ }
+ ],
+ "id": 34572,
+ "name": "Return",
+ "src": "15052:42:96"
+ }
+ ],
+ "id": 34573,
+ "name": "Block",
+ "src": "14636:463:96"
+ }
+ ],
+ "id": 34574,
+ "name": "FunctionDefinition",
+ "src": "14462:637:96"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Registers an attestation\n@param identifier Hash of the identifier to be attested\n@param issuer Address of the attestation issuer\n@param account Address of the account being mapped to the identifier\n@param issuedOn Time at which the issuer issued the attestation in Unix time \n@param signer Address of the signer of the attestation",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "_registerAttestation",
+ "scope": 34897,
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "private"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifier",
+ "scope": 34709,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 34575,
+ "name": "ElementaryTypeName",
+ "src": "15519:7:96"
+ }
+ ],
+ "id": 34576,
+ "name": "VariableDeclaration",
+ "src": "15519:18:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "issuer",
+ "scope": 34709,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34577,
+ "name": "ElementaryTypeName",
+ "src": "15543:7:96"
+ }
+ ],
+ "id": 34578,
+ "name": "VariableDeclaration",
+ "src": "15543:14:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "account",
+ "scope": 34709,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34579,
+ "name": "ElementaryTypeName",
+ "src": "15563:7:96"
+ }
+ ],
+ "id": 34580,
+ "name": "VariableDeclaration",
+ "src": "15563:15:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "signer",
+ "scope": 34709,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34581,
+ "name": "ElementaryTypeName",
+ "src": "15584:7:96"
+ }
+ ],
+ "id": 34582,
+ "name": "VariableDeclaration",
+ "src": "15584:14:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "issuedOn",
+ "scope": 34709,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint64",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint64",
+ "type": "uint64"
+ },
+ "id": 34583,
+ "name": "ElementaryTypeName",
+ "src": "15604:6:96"
+ }
+ ],
+ "id": 34584,
+ "name": "VariableDeclaration",
+ "src": "15604:15:96"
+ }
+ ],
+ "id": 34585,
+ "name": "ParameterList",
+ "src": "15513:110:96"
+ },
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 34586,
+ "name": "ParameterList",
+ "src": "15632:0:96"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_44f88d8320cc2eb6fc0a10c7fdc0e853ee997ceceb4e650d95a5d5f909ffd909",
+ "typeString": "literal_string \"Attestation has been revoked\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 34587,
+ "name": "Identifier",
+ "src": "15638:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "!",
+ "prefix": true,
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33772,
+ "type": "mapping(bytes32 => bool)",
+ "value": "revokedAttestations"
+ },
+ "id": 34588,
+ "name": "Identifier",
+ "src": "15654:19:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "bytes32",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34389,
+ "type": "function (bytes32,address,address,address,uint64) pure returns (bytes32)",
+ "value": "getUniqueAttestationHash"
+ },
+ "id": 34589,
+ "name": "Identifier",
+ "src": "15674:24:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34576,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 34590,
+ "name": "Identifier",
+ "src": "15699:10:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34578,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 34591,
+ "name": "Identifier",
+ "src": "15711:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34580,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 34592,
+ "name": "Identifier",
+ "src": "15719:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34582,
+ "type": "address",
+ "value": "signer"
+ },
+ "id": 34593,
+ "name": "Identifier",
+ "src": "15728:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34584,
+ "type": "uint64",
+ "value": "issuedOn"
+ },
+ "id": 34594,
+ "name": "Identifier",
+ "src": "15736:8:96"
+ }
+ ],
+ "id": 34595,
+ "name": "FunctionCall",
+ "src": "15674:71:96"
+ }
+ ],
+ "id": 34596,
+ "name": "IndexAccess",
+ "src": "15654:92:96"
+ }
+ ],
+ "id": 34597,
+ "name": "UnaryOperation",
+ "src": "15653:93:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "4174746573746174696f6e20686173206265656e207265766f6b6564",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"Attestation has been revoked\"",
+ "value": "Attestation has been revoked"
+ },
+ "id": 34598,
+ "name": "Literal",
+ "src": "15754:30:96"
+ }
+ ],
+ "id": 34599,
+ "name": "FunctionCall",
+ "src": "15638:152:96"
+ }
+ ],
+ "id": 34600,
+ "name": "ExpressionStatement",
+ "src": "15638:152:96"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 34602
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "numExistingAttestations",
+ "scope": 34708,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34601,
+ "name": "ElementaryTypeName",
+ "src": "15796:7:96"
+ }
+ ],
+ "id": 34602,
+ "name": "VariableDeclaration",
+ "src": "15796:31:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33761,
+ "type": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))",
+ "value": "identifierToAttestations"
+ },
+ "id": 34603,
+ "name": "Identifier",
+ "src": "15830:24:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34576,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 34604,
+ "name": "Identifier",
+ "src": "15855:10:96"
+ }
+ ],
+ "id": 34605,
+ "name": "IndexAccess",
+ "src": "15830:36:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34578,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 34606,
+ "name": "Identifier",
+ "src": "15867:6:96"
+ }
+ ],
+ "id": 34607,
+ "name": "IndexAccess",
+ "src": "15830:44:96"
+ }
+ ],
+ "id": 34608,
+ "name": "MemberAccess",
+ "src": "15830:51:96"
+ }
+ ],
+ "id": 34609,
+ "name": "VariableDeclarationStatement",
+ "src": "15796:85:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_7c7eae4e20b6b7543cee7633ce45af90bce3bf94c048d8e4118ccddc4d23d23d",
+ "typeString": "literal_string \"Max attestations already registered for identifier\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 34610,
+ "name": "Identifier",
+ "src": "15887:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "<=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34602,
+ "type": "uint256",
+ "value": "numExistingAttestations"
+ },
+ "id": 34611,
+ "name": "Identifier",
+ "src": "15902:23:96"
+ }
+ ],
+ "id": 34612,
+ "name": "MemberAccess",
+ "src": "15902:27:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 34613,
+ "name": "Literal",
+ "src": "15930:1:96"
+ }
+ ],
+ "id": 34614,
+ "name": "FunctionCall",
+ "src": "15902:30:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33786,
+ "type": "uint256",
+ "value": "MAX_ATTESTATIONS_PER_IDENTIFIER"
+ },
+ "id": 34615,
+ "name": "Identifier",
+ "src": "15936:31:96"
+ }
+ ],
+ "id": 34616,
+ "name": "BinaryOperation",
+ "src": "15902:65:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "4d6178206174746573746174696f6e7320616c7265616479207265676973746572656420666f72206964656e746966696572",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"Max attestations already registered for identifier\"",
+ "value": "Max attestations already registered for identifier"
+ },
+ "id": 34617,
+ "name": "Literal",
+ "src": "15975:52:96"
+ }
+ ],
+ "id": 34618,
+ "name": "FunctionCall",
+ "src": "15887:146:96"
+ }
+ ],
+ "id": 34619,
+ "name": "ExpressionStatement",
+ "src": "15887:146:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_460e11b5170ac3dbe9a90b55d8ff165b7b027f1f0b8b497713a2819ac317a4fa",
+ "typeString": "literal_string \"Max identifiers already registered for account\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 34620,
+ "name": "Identifier",
+ "src": "16039:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "<=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "bytes32[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "mapping(address => bytes32[] storage ref)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33768,
+ "type": "mapping(address => mapping(address => bytes32[] storage ref))",
+ "value": "addressToIdentifiers"
+ },
+ "id": 34621,
+ "name": "Identifier",
+ "src": "16054:20:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34580,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 34622,
+ "name": "Identifier",
+ "src": "16075:7:96"
+ }
+ ],
+ "id": 34623,
+ "name": "IndexAccess",
+ "src": "16054:29:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34578,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 34624,
+ "name": "Identifier",
+ "src": "16084:6:96"
+ }
+ ],
+ "id": 34625,
+ "name": "IndexAccess",
+ "src": "16054:37:96"
+ }
+ ],
+ "id": 34626,
+ "name": "MemberAccess",
+ "src": "16054:44:96"
+ }
+ ],
+ "id": 34627,
+ "name": "MemberAccess",
+ "src": "16054:48:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 34628,
+ "name": "Literal",
+ "src": "16103:1:96"
+ }
+ ],
+ "id": 34629,
+ "name": "FunctionCall",
+ "src": "16054:51:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33789,
+ "type": "uint256",
+ "value": "MAX_IDENTIFIERS_PER_ADDRESS"
+ },
+ "id": 34630,
+ "name": "Identifier",
+ "src": "16109:27:96"
+ }
+ ],
+ "id": 34631,
+ "name": "BinaryOperation",
+ "src": "16054:82:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "4d6178206964656e7469666965727320616c7265616479207265676973746572656420666f72206163636f756e74",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"Max identifiers already registered for account\"",
+ "value": "Max identifiers already registered for account"
+ },
+ "id": 34632,
+ "name": "Literal",
+ "src": "16144:48:96"
+ }
+ ],
+ "id": 34633,
+ "name": "FunctionCall",
+ "src": "16039:159:96"
+ }
+ ],
+ "id": 34634,
+ "name": "ExpressionStatement",
+ "src": "16039:159:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 34636
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "i",
+ "scope": 34664,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34635,
+ "name": "ElementaryTypeName",
+ "src": "16210:7:96"
+ }
+ ],
+ "id": 34636,
+ "name": "VariableDeclaration",
+ "src": "16210:9:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 34637,
+ "name": "Literal",
+ "src": "16222:1:96"
+ }
+ ],
+ "id": 34638,
+ "name": "VariableDeclarationStatement",
+ "src": "16210:13:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "<",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34636,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34639,
+ "name": "Identifier",
+ "src": "16225:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34602,
+ "type": "uint256",
+ "value": "numExistingAttestations"
+ },
+ "id": 34640,
+ "name": "Identifier",
+ "src": "16229:23:96"
+ }
+ ],
+ "id": 34641,
+ "name": "BinaryOperation",
+ "src": "16225:27:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34636,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34642,
+ "name": "Identifier",
+ "src": "16254:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34636,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34643,
+ "name": "Identifier",
+ "src": "16258:1:96"
+ }
+ ],
+ "id": 34644,
+ "name": "MemberAccess",
+ "src": "16258:5:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 34645,
+ "name": "Literal",
+ "src": "16264:1:96"
+ }
+ ],
+ "id": 34646,
+ "name": "FunctionCall",
+ "src": "16258:8:96"
+ }
+ ],
+ "id": 34647,
+ "name": "Assignment",
+ "src": "16254:12:96"
+ }
+ ],
+ "id": 34648,
+ "name": "ExpressionStatement",
+ "src": "16254:12:96"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3ac76dafbb16c10f61396b165399ccb352ce53f1e5de303a5f9df7f1c53d8585",
+ "typeString": "literal_string \"Attestation for this account already exists\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42909,
+ 42910
+ ],
+ "referencedDeclaration": 42910,
+ "type": "function (bool,string memory) pure",
+ "value": "require"
+ },
+ "id": 34649,
+ "name": "Identifier",
+ "src": "16494:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "!=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "account",
+ "referencedDeclaration": 33747,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "struct FederatedAttestations.OwnershipAttestation storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33761,
+ "type": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))",
+ "value": "identifierToAttestations"
+ },
+ "id": 34650,
+ "name": "Identifier",
+ "src": "16511:24:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34576,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 34651,
+ "name": "Identifier",
+ "src": "16536:10:96"
+ }
+ ],
+ "id": 34652,
+ "name": "IndexAccess",
+ "src": "16511:36:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34578,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 34653,
+ "name": "Identifier",
+ "src": "16548:6:96"
+ }
+ ],
+ "id": 34654,
+ "name": "IndexAccess",
+ "src": "16511:44:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34636,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34655,
+ "name": "Identifier",
+ "src": "16556:1:96"
+ }
+ ],
+ "id": 34656,
+ "name": "IndexAccess",
+ "src": "16511:47:96"
+ }
+ ],
+ "id": 34657,
+ "name": "MemberAccess",
+ "src": "16511:55:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34580,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 34658,
+ "name": "Identifier",
+ "src": "16570:7:96"
+ }
+ ],
+ "id": 34659,
+ "name": "BinaryOperation",
+ "src": "16511:66:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "4174746573746174696f6e20666f722074686973206163636f756e7420616c726561647920657869737473",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"Attestation for this account already exists\"",
+ "value": "Attestation for this account already exists"
+ },
+ "id": 34660,
+ "name": "Literal",
+ "src": "16587:45:96"
+ }
+ ],
+ "id": 34661,
+ "name": "FunctionCall",
+ "src": "16494:146:96"
+ }
+ ],
+ "id": 34662,
+ "name": "ExpressionStatement",
+ "src": "16494:146:96"
+ }
+ ],
+ "id": 34663,
+ "name": "Block",
+ "src": "16268:379:96"
+ }
+ ],
+ "id": 34664,
+ "name": "ForStatement",
+ "src": "16205:442:96"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 34666
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "publishedOn",
+ "scope": 34708,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint64",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint64",
+ "type": "uint64"
+ },
+ "id": 34665,
+ "name": "ElementaryTypeName",
+ "src": "16652:6:96"
+ }
+ ],
+ "id": 34666,
+ "name": "VariableDeclaration",
+ "src": "16652:18:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint64",
+ "type_conversion": true
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "type": "type(uint64)",
+ "value": "uint64"
+ },
+ "id": 34667,
+ "name": "ElementaryTypeNameExpression",
+ "src": "16673:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "timestamp",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42896,
+ "type": "block",
+ "value": "block"
+ },
+ "id": 34668,
+ "name": "Identifier",
+ "src": "16680:5:96"
+ }
+ ],
+ "id": 34669,
+ "name": "MemberAccess",
+ "src": "16680:15:96"
+ }
+ ],
+ "id": 34670,
+ "name": "FunctionCall",
+ "src": "16673:23:96"
+ }
+ ],
+ "id": 34671,
+ "name": "VariableDeclarationStatement",
+ "src": "16652:44:96"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 34673
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "attestation",
+ "scope": 34708,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "struct FederatedAttestations.OwnershipAttestation",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "OwnershipAttestation",
+ "referencedDeclaration": 33754,
+ "type": "struct FederatedAttestations.OwnershipAttestation"
+ },
+ "id": 34672,
+ "name": "UserDefinedTypeName",
+ "src": "16702:20:96"
+ }
+ ],
+ "id": 34673,
+ "name": "VariableDeclaration",
+ "src": "16702:39:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": true,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "struct FederatedAttestations.OwnershipAttestation memory",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33754,
+ "type": "type(struct FederatedAttestations.OwnershipAttestation storage pointer)",
+ "value": "OwnershipAttestation"
+ },
+ "id": 34674,
+ "name": "Identifier",
+ "src": "16744:20:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34580,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 34675,
+ "name": "Identifier",
+ "src": "16772:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34582,
+ "type": "address",
+ "value": "signer"
+ },
+ "id": 34676,
+ "name": "Identifier",
+ "src": "16787:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34584,
+ "type": "uint64",
+ "value": "issuedOn"
+ },
+ "id": 34677,
+ "name": "Identifier",
+ "src": "16801:8:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34666,
+ "type": "uint64",
+ "value": "publishedOn"
+ },
+ "id": 34678,
+ "name": "Identifier",
+ "src": "16817:11:96"
+ }
+ ],
+ "id": 34679,
+ "name": "FunctionCall",
+ "src": "16744:90:96"
+ }
+ ],
+ "id": 34680,
+ "name": "VariableDeclarationStatement",
+ "src": "16702:132:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_OwnershipAttestation_$33754_memory_ptr",
+ "typeString": "struct FederatedAttestations.OwnershipAttestation memory"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "push",
+ "referencedDeclaration": null,
+ "type": "function (struct FederatedAttestations.OwnershipAttestation storage ref) returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33761,
+ "type": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))",
+ "value": "identifierToAttestations"
+ },
+ "id": 34681,
+ "name": "Identifier",
+ "src": "16840:24:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34576,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 34682,
+ "name": "Identifier",
+ "src": "16865:10:96"
+ }
+ ],
+ "id": 34684,
+ "name": "IndexAccess",
+ "src": "16840:36:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34578,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 34683,
+ "name": "Identifier",
+ "src": "16877:6:96"
+ }
+ ],
+ "id": 34685,
+ "name": "IndexAccess",
+ "src": "16840:44:96"
+ }
+ ],
+ "id": 34686,
+ "name": "MemberAccess",
+ "src": "16840:49:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34673,
+ "type": "struct FederatedAttestations.OwnershipAttestation memory",
+ "value": "attestation"
+ },
+ "id": 34687,
+ "name": "Identifier",
+ "src": "16890:11:96"
+ }
+ ],
+ "id": 34688,
+ "name": "FunctionCall",
+ "src": "16840:62:96"
+ }
+ ],
+ "id": 34689,
+ "name": "ExpressionStatement",
+ "src": "16840:62:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "push",
+ "referencedDeclaration": null,
+ "type": "function (bytes32) returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "bytes32[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "mapping(address => bytes32[] storage ref)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33768,
+ "type": "mapping(address => mapping(address => bytes32[] storage ref))",
+ "value": "addressToIdentifiers"
+ },
+ "id": 34690,
+ "name": "Identifier",
+ "src": "16908:20:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34580,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 34691,
+ "name": "Identifier",
+ "src": "16929:7:96"
+ }
+ ],
+ "id": 34693,
+ "name": "IndexAccess",
+ "src": "16908:29:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34578,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 34692,
+ "name": "Identifier",
+ "src": "16938:6:96"
+ }
+ ],
+ "id": 34694,
+ "name": "IndexAccess",
+ "src": "16908:37:96"
+ }
+ ],
+ "id": 34695,
+ "name": "MemberAccess",
+ "src": "16908:42:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34576,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 34696,
+ "name": "Identifier",
+ "src": "16951:10:96"
+ }
+ ],
+ "id": 34697,
+ "name": "FunctionCall",
+ "src": "16908:54:96"
+ }
+ ],
+ "id": 34698,
+ "name": "ExpressionStatement",
+ "src": "16908:54:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33807,
+ "type": "function (bytes32,address,address,address,uint64,uint64)",
+ "value": "AttestationRegistered"
+ },
+ "id": 34699,
+ "name": "Identifier",
+ "src": "16973:21:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34576,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 34700,
+ "name": "Identifier",
+ "src": "16995:10:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34578,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 34701,
+ "name": "Identifier",
+ "src": "17007:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34580,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 34702,
+ "name": "Identifier",
+ "src": "17015:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34582,
+ "type": "address",
+ "value": "signer"
+ },
+ "id": 34703,
+ "name": "Identifier",
+ "src": "17024:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34584,
+ "type": "uint64",
+ "value": "issuedOn"
+ },
+ "id": 34704,
+ "name": "Identifier",
+ "src": "17032:8:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34666,
+ "type": "uint64",
+ "value": "publishedOn"
+ },
+ "id": 34705,
+ "name": "Identifier",
+ "src": "17042:11:96"
+ }
+ ],
+ "id": 34706,
+ "name": "FunctionCall",
+ "src": "16973:81:96"
+ }
+ ],
+ "id": 34707,
+ "name": "EmitStatement",
+ "src": "16968:86:96"
+ }
+ ],
+ "id": 34708,
+ "name": "Block",
+ "src": "15632:1427:96"
+ }
+ ],
+ "id": 34709,
+ "name": "FunctionDefinition",
+ "src": "15484:1575:96"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Revokes an attestation:\n helper function for revokeAttestation and batchRevokeAttestations\n@param identifier Hash of the identifier to be revoked\n@param issuer Address of the attestation issuer\n@param account Address of the account mapped to the identifier\n@dev Reverts if attestation is not found mapping identifier <-> account",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "_revokeAttestation",
+ "scope": 34897,
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "private"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifier",
+ "scope": 34896,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 34710,
+ "name": "ElementaryTypeName",
+ "src": "17470:7:96"
+ }
+ ],
+ "id": 34711,
+ "name": "VariableDeclaration",
+ "src": "17470:18:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "issuer",
+ "scope": 34896,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34712,
+ "name": "ElementaryTypeName",
+ "src": "17490:7:96"
+ }
+ ],
+ "id": 34713,
+ "name": "VariableDeclaration",
+ "src": "17490:14:96"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "account",
+ "scope": 34896,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 34714,
+ "name": "ElementaryTypeName",
+ "src": "17506:7:96"
+ }
+ ],
+ "id": 34715,
+ "name": "VariableDeclaration",
+ "src": "17506:15:96"
+ }
+ ],
+ "id": 34716,
+ "name": "ParameterList",
+ "src": "17469:53:96"
+ },
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 34717,
+ "name": "ParameterList",
+ "src": "17531:0:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 34721
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "attestations",
+ "scope": 34895,
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "type": "struct FederatedAttestations.OwnershipAttestation[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "struct FederatedAttestations.OwnershipAttestation[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "OwnershipAttestation",
+ "referencedDeclaration": 33754,
+ "type": "struct FederatedAttestations.OwnershipAttestation"
+ },
+ "id": 34719,
+ "name": "UserDefinedTypeName",
+ "src": "17537:20:96"
+ }
+ ],
+ "id": 34720,
+ "name": "ArrayTypeName",
+ "src": "17537:22:96"
+ }
+ ],
+ "id": 34721,
+ "name": "VariableDeclaration",
+ "src": "17537:43:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33761,
+ "type": "mapping(bytes32 => mapping(address => struct FederatedAttestations.OwnershipAttestation storage ref[] storage ref))",
+ "value": "identifierToAttestations"
+ },
+ "id": 34722,
+ "name": "Identifier",
+ "src": "17583:24:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34711,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 34723,
+ "name": "Identifier",
+ "src": "17608:10:96"
+ }
+ ],
+ "id": 34724,
+ "name": "IndexAccess",
+ "src": "17583:36:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34713,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 34725,
+ "name": "Identifier",
+ "src": "17620:6:96"
+ }
+ ],
+ "id": 34726,
+ "name": "IndexAccess",
+ "src": "17583:44:96"
+ }
+ ],
+ "id": 34727,
+ "name": "VariableDeclarationStatement",
+ "src": "17537:90:96"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 34729
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "lenAttestations",
+ "scope": 34895,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34728,
+ "name": "ElementaryTypeName",
+ "src": "17633:7:96"
+ }
+ ],
+ "id": 34729,
+ "name": "VariableDeclaration",
+ "src": "17633:23:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34721,
+ "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer",
+ "value": "attestations"
+ },
+ "id": 34730,
+ "name": "Identifier",
+ "src": "17659:12:96"
+ }
+ ],
+ "id": 34731,
+ "name": "MemberAccess",
+ "src": "17659:19:96"
+ }
+ ],
+ "id": 34732,
+ "name": "VariableDeclarationStatement",
+ "src": "17633:45:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 34734
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "i",
+ "scope": 34890,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34733,
+ "name": "ElementaryTypeName",
+ "src": "17689:7:96"
+ }
+ ],
+ "id": 34734,
+ "name": "VariableDeclaration",
+ "src": "17689:9:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 34735,
+ "name": "Literal",
+ "src": "17701:1:96"
+ }
+ ],
+ "id": 34736,
+ "name": "VariableDeclarationStatement",
+ "src": "17689:13:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "<",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34734,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34737,
+ "name": "Identifier",
+ "src": "17704:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34729,
+ "type": "uint256",
+ "value": "lenAttestations"
+ },
+ "id": 34738,
+ "name": "Identifier",
+ "src": "17708:15:96"
+ }
+ ],
+ "id": 34739,
+ "name": "BinaryOperation",
+ "src": "17704:19:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34734,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34740,
+ "name": "Identifier",
+ "src": "17725:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34734,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34741,
+ "name": "Identifier",
+ "src": "17729:1:96"
+ }
+ ],
+ "id": 34742,
+ "name": "MemberAccess",
+ "src": "17729:5:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 34743,
+ "name": "Literal",
+ "src": "17735:1:96"
+ }
+ ],
+ "id": 34744,
+ "name": "FunctionCall",
+ "src": "17729:8:96"
+ }
+ ],
+ "id": 34745,
+ "name": "Assignment",
+ "src": "17725:12:96"
+ }
+ ],
+ "id": 34746,
+ "name": "ExpressionStatement",
+ "src": "17725:12:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "falseBody": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "!=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "account",
+ "referencedDeclaration": 33747,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "struct FederatedAttestations.OwnershipAttestation storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34721,
+ "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer",
+ "value": "attestations"
+ },
+ "id": 34747,
+ "name": "Identifier",
+ "src": "17751:12:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34734,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34748,
+ "name": "Identifier",
+ "src": "17764:1:96"
+ }
+ ],
+ "id": 34749,
+ "name": "IndexAccess",
+ "src": "17751:15:96"
+ }
+ ],
+ "id": 34750,
+ "name": "MemberAccess",
+ "src": "17751:23:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34715,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 34751,
+ "name": "Identifier",
+ "src": "17778:7:96"
+ }
+ ],
+ "id": 34752,
+ "name": "BinaryOperation",
+ "src": "17751:34:96"
+ },
+ {
+ "children": [
+ {
+ "id": 34753,
+ "name": "Continue",
+ "src": "17797:8:96"
+ }
+ ],
+ "id": 34754,
+ "name": "Block",
+ "src": "17787:27:96"
+ }
+ ],
+ "id": 34755,
+ "name": "IfStatement",
+ "src": "17747:67:96"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 34757
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "attestation",
+ "scope": 34889,
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "type": "struct FederatedAttestations.OwnershipAttestation",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "OwnershipAttestation",
+ "referencedDeclaration": 33754,
+ "type": "struct FederatedAttestations.OwnershipAttestation"
+ },
+ "id": 34756,
+ "name": "UserDefinedTypeName",
+ "src": "17822:20:96"
+ }
+ ],
+ "id": 34757,
+ "name": "VariableDeclaration",
+ "src": "17822:39:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "struct FederatedAttestations.OwnershipAttestation storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34721,
+ "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer",
+ "value": "attestations"
+ },
+ "id": 34758,
+ "name": "Identifier",
+ "src": "17864:12:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34734,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34759,
+ "name": "Identifier",
+ "src": "17877:1:96"
+ }
+ ],
+ "id": 34760,
+ "name": "IndexAccess",
+ "src": "17864:15:96"
+ }
+ ],
+ "id": 34761,
+ "name": "VariableDeclarationStatement",
+ "src": "17822:57:96"
+ },
+ {
+ "attributes": {
+ "falseBody": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "!=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34734,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34762,
+ "name": "Identifier",
+ "src": "18080:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "-",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34729,
+ "type": "uint256",
+ "value": "lenAttestations"
+ },
+ "id": 34763,
+ "name": "Identifier",
+ "src": "18085:15:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 34764,
+ "name": "Literal",
+ "src": "18103:1:96"
+ }
+ ],
+ "id": 34765,
+ "name": "BinaryOperation",
+ "src": "18085:19:96"
+ }
+ ],
+ "id": 34766,
+ "name": "BinaryOperation",
+ "src": "18080:24:96"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "struct FederatedAttestations.OwnershipAttestation storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "type": "struct FederatedAttestations.OwnershipAttestation storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34721,
+ "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer",
+ "value": "attestations"
+ },
+ "id": 34767,
+ "name": "Identifier",
+ "src": "18116:12:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34734,
+ "type": "uint256",
+ "value": "i"
+ },
+ "id": 34768,
+ "name": "Identifier",
+ "src": "18129:1:96"
+ }
+ ],
+ "id": 34769,
+ "name": "IndexAccess",
+ "src": "18116:15:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "struct FederatedAttestations.OwnershipAttestation storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34721,
+ "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer",
+ "value": "attestations"
+ },
+ "id": 34770,
+ "name": "Identifier",
+ "src": "18134:12:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "-",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34729,
+ "type": "uint256",
+ "value": "lenAttestations"
+ },
+ "id": 34771,
+ "name": "Identifier",
+ "src": "18147:15:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 34772,
+ "name": "Literal",
+ "src": "18165:1:96"
+ }
+ ],
+ "id": 34773,
+ "name": "BinaryOperation",
+ "src": "18147:19:96"
+ }
+ ],
+ "id": 34774,
+ "name": "IndexAccess",
+ "src": "18134:33:96"
+ }
+ ],
+ "id": 34775,
+ "name": "Assignment",
+ "src": "18116:51:96"
+ }
+ ],
+ "id": 34776,
+ "name": "ExpressionStatement",
+ "src": "18116:51:96"
+ }
+ ],
+ "id": 34777,
+ "name": "Block",
+ "src": "18106:70:96"
+ }
+ ],
+ "id": 34778,
+ "name": "IfStatement",
+ "src": "18076:100:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "arguments": [
+ null
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ null
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "pop",
+ "referencedDeclaration": null,
+ "type": "function ()"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34721,
+ "type": "struct FederatedAttestations.OwnershipAttestation storage ref[] storage pointer",
+ "value": "attestations"
+ },
+ "id": 34779,
+ "name": "Identifier",
+ "src": "18183:12:96"
+ }
+ ],
+ "id": 34781,
+ "name": "MemberAccess",
+ "src": "18183:16:96"
+ }
+ ],
+ "id": 34782,
+ "name": "FunctionCall",
+ "src": "18183:18:96"
+ }
+ ],
+ "id": 34783,
+ "name": "ExpressionStatement",
+ "src": "18183:18:96"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 34785
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "deletedIdentifier",
+ "scope": 34889,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bool",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bool",
+ "type": "bool"
+ },
+ "id": 34784,
+ "name": "ElementaryTypeName",
+ "src": "18210:4:96"
+ }
+ ],
+ "id": 34785,
+ "name": "VariableDeclaration",
+ "src": "18210:22:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "66616c7365",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "bool",
+ "type": "bool",
+ "value": "false"
+ },
+ "id": 34786,
+ "name": "Literal",
+ "src": "18235:5:96"
+ }
+ ],
+ "id": 34787,
+ "name": "VariableDeclarationStatement",
+ "src": "18210:30:96"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 34791
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "identifiers",
+ "scope": 34889,
+ "stateVariable": false,
+ "storageLocation": "storage",
+ "type": "bytes32[]",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "length": null,
+ "type": "bytes32[]"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 34789,
+ "name": "ElementaryTypeName",
+ "src": "18248:7:96"
+ }
+ ],
+ "id": 34790,
+ "name": "ArrayTypeName",
+ "src": "18248:9:96"
+ }
+ ],
+ "id": 34791,
+ "name": "VariableDeclaration",
+ "src": "18248:29:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "bytes32[] storage ref"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "mapping(address => bytes32[] storage ref)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33768,
+ "type": "mapping(address => mapping(address => bytes32[] storage ref))",
+ "value": "addressToIdentifiers"
+ },
+ "id": 34792,
+ "name": "Identifier",
+ "src": "18280:20:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34715,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 34793,
+ "name": "Identifier",
+ "src": "18301:7:96"
+ }
+ ],
+ "id": 34794,
+ "name": "IndexAccess",
+ "src": "18280:29:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34713,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 34795,
+ "name": "Identifier",
+ "src": "18310:6:96"
+ }
+ ],
+ "id": 34796,
+ "name": "IndexAccess",
+ "src": "18280:37:96"
+ }
+ ],
+ "id": 34797,
+ "name": "VariableDeclarationStatement",
+ "src": "18248:69:96"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 34799
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "lenIdentifiers",
+ "scope": 34889,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34798,
+ "name": "ElementaryTypeName",
+ "src": "18325:7:96"
+ }
+ ],
+ "id": 34799,
+ "name": "VariableDeclaration",
+ "src": "18325:22:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "length",
+ "referencedDeclaration": null,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34791,
+ "type": "bytes32[] storage pointer",
+ "value": "identifiers"
+ },
+ "id": 34800,
+ "name": "Identifier",
+ "src": "18350:11:96"
+ }
+ ],
+ "id": 34801,
+ "name": "MemberAccess",
+ "src": "18350:18:96"
+ }
+ ],
+ "id": 34802,
+ "name": "VariableDeclarationStatement",
+ "src": "18325:43:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "assignments": [
+ 34804
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "j",
+ "scope": 34853,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 34803,
+ "name": "ElementaryTypeName",
+ "src": "18382:7:96"
+ }
+ ],
+ "id": 34804,
+ "name": "VariableDeclaration",
+ "src": "18382:9:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 34805,
+ "name": "Literal",
+ "src": "18394:1:96"
+ }
+ ],
+ "id": 34806,
+ "name": "VariableDeclarationStatement",
+ "src": "18382:13:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "<",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34804,
+ "type": "uint256",
+ "value": "j"
+ },
+ "id": 34807,
+ "name": "Identifier",
+ "src": "18397:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34799,
+ "type": "uint256",
+ "value": "lenIdentifiers"
+ },
+ "id": 34808,
+ "name": "Identifier",
+ "src": "18401:14:96"
+ }
+ ],
+ "id": 34809,
+ "name": "BinaryOperation",
+ "src": "18397:18:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34804,
+ "type": "uint256",
+ "value": "j"
+ },
+ "id": 34810,
+ "name": "Identifier",
+ "src": "18417:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34804,
+ "type": "uint256",
+ "value": "j"
+ },
+ "id": 34811,
+ "name": "Identifier",
+ "src": "18421:1:96"
+ }
+ ],
+ "id": 34812,
+ "name": "MemberAccess",
+ "src": "18421:5:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 34813,
+ "name": "Literal",
+ "src": "18427:1:96"
+ }
+ ],
+ "id": 34814,
+ "name": "FunctionCall",
+ "src": "18421:8:96"
+ }
+ ],
+ "id": 34815,
+ "name": "Assignment",
+ "src": "18417:12:96"
+ }
+ ],
+ "id": 34816,
+ "name": "ExpressionStatement",
+ "src": "18417:12:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "falseBody": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "!=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "bytes32"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34791,
+ "type": "bytes32[] storage pointer",
+ "value": "identifiers"
+ },
+ "id": 34817,
+ "name": "Identifier",
+ "src": "18445:11:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34804,
+ "type": "uint256",
+ "value": "j"
+ },
+ "id": 34818,
+ "name": "Identifier",
+ "src": "18457:1:96"
+ }
+ ],
+ "id": 34819,
+ "name": "IndexAccess",
+ "src": "18445:14:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34711,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 34820,
+ "name": "Identifier",
+ "src": "18463:10:96"
+ }
+ ],
+ "id": 34821,
+ "name": "BinaryOperation",
+ "src": "18445:28:96"
+ },
+ {
+ "children": [
+ {
+ "id": 34822,
+ "name": "Continue",
+ "src": "18487:8:96"
+ }
+ ],
+ "id": 34823,
+ "name": "Block",
+ "src": "18475:31:96"
+ }
+ ],
+ "id": 34824,
+ "name": "IfStatement",
+ "src": "18441:65:96"
+ },
+ {
+ "attributes": {
+ "falseBody": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "!=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34804,
+ "type": "uint256",
+ "value": "j"
+ },
+ "id": 34825,
+ "name": "Identifier",
+ "src": "18519:1:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "-",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34799,
+ "type": "uint256",
+ "value": "lenIdentifiers"
+ },
+ "id": 34826,
+ "name": "Identifier",
+ "src": "18524:14:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 34827,
+ "name": "Literal",
+ "src": "18541:1:96"
+ }
+ ],
+ "id": 34828,
+ "name": "BinaryOperation",
+ "src": "18524:18:96"
+ }
+ ],
+ "id": 34829,
+ "name": "BinaryOperation",
+ "src": "18519:23:96"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "bytes32"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "type": "bytes32"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34791,
+ "type": "bytes32[] storage pointer",
+ "value": "identifiers"
+ },
+ "id": 34830,
+ "name": "Identifier",
+ "src": "18556:11:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34804,
+ "type": "uint256",
+ "value": "j"
+ },
+ "id": 34831,
+ "name": "Identifier",
+ "src": "18568:1:96"
+ }
+ ],
+ "id": 34832,
+ "name": "IndexAccess",
+ "src": "18556:14:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "bytes32"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34791,
+ "type": "bytes32[] storage pointer",
+ "value": "identifiers"
+ },
+ "id": 34833,
+ "name": "Identifier",
+ "src": "18573:11:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "-",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34799,
+ "type": "uint256",
+ "value": "lenIdentifiers"
+ },
+ "id": 34834,
+ "name": "Identifier",
+ "src": "18585:14:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 34835,
+ "name": "Literal",
+ "src": "18602:1:96"
+ }
+ ],
+ "id": 34836,
+ "name": "BinaryOperation",
+ "src": "18585:18:96"
+ }
+ ],
+ "id": 34837,
+ "name": "IndexAccess",
+ "src": "18573:31:96"
+ }
+ ],
+ "id": 34838,
+ "name": "Assignment",
+ "src": "18556:48:96"
+ }
+ ],
+ "id": 34839,
+ "name": "ExpressionStatement",
+ "src": "18556:48:96"
+ }
+ ],
+ "id": 34840,
+ "name": "Block",
+ "src": "18544:71:96"
+ }
+ ],
+ "id": 34841,
+ "name": "IfStatement",
+ "src": "18515:100:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "arguments": [
+ null
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ null
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "pop",
+ "referencedDeclaration": null,
+ "type": "function ()"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34791,
+ "type": "bytes32[] storage pointer",
+ "value": "identifiers"
+ },
+ "id": 34842,
+ "name": "Identifier",
+ "src": "18624:11:96"
+ }
+ ],
+ "id": 34844,
+ "name": "MemberAccess",
+ "src": "18624:15:96"
+ }
+ ],
+ "id": 34845,
+ "name": "FunctionCall",
+ "src": "18624:17:96"
+ }
+ ],
+ "id": 34846,
+ "name": "ExpressionStatement",
+ "src": "18624:17:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34785,
+ "type": "bool",
+ "value": "deletedIdentifier"
+ },
+ "id": 34847,
+ "name": "Identifier",
+ "src": "18651:17:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "74727565",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "bool",
+ "type": "bool",
+ "value": "true"
+ },
+ "id": 34848,
+ "name": "Literal",
+ "src": "18671:4:96"
+ }
+ ],
+ "id": 34849,
+ "name": "Assignment",
+ "src": "18651:24:96"
+ }
+ ],
+ "id": 34850,
+ "name": "ExpressionStatement",
+ "src": "18651:24:96"
+ },
+ {
+ "id": 34851,
+ "name": "Break",
+ "src": "18685:5:96"
+ }
+ ],
+ "id": 34852,
+ "name": "Block",
+ "src": "18431:268:96"
+ }
+ ],
+ "id": 34853,
+ "name": "ForStatement",
+ "src": "18377:322:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42895,
+ "type": "function (bool) pure",
+ "value": "assert"
+ },
+ "id": 34854,
+ "name": "Identifier",
+ "src": "18788:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34785,
+ "type": "bool",
+ "value": "deletedIdentifier"
+ },
+ "id": 34855,
+ "name": "Identifier",
+ "src": "18795:17:96"
+ }
+ ],
+ "id": 34856,
+ "name": "FunctionCall",
+ "src": "18788:25:96"
+ }
+ ],
+ "id": 34857,
+ "name": "ExpressionStatement",
+ "src": "18788:25:96"
+ },
+ {
+ "attributes": {
+ "assignments": [
+ 34859
+ ]
+ },
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "attestationHash",
+ "scope": 34889,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bytes32",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bytes32",
+ "type": "bytes32"
+ },
+ "id": 34858,
+ "name": "ElementaryTypeName",
+ "src": "18822:7:96"
+ }
+ ],
+ "id": 34859,
+ "name": "VariableDeclaration",
+ "src": "18822:23:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "bytes32",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34389,
+ "type": "function (bytes32,address,address,address,uint64) pure returns (bytes32)",
+ "value": "getUniqueAttestationHash"
+ },
+ "id": 34860,
+ "name": "Identifier",
+ "src": "18848:24:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34711,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 34861,
+ "name": "Identifier",
+ "src": "18882:10:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34713,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 34862,
+ "name": "Identifier",
+ "src": "18902:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34715,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 34863,
+ "name": "Identifier",
+ "src": "18918:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "signer",
+ "referencedDeclaration": 33749,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34757,
+ "type": "struct FederatedAttestations.OwnershipAttestation memory",
+ "value": "attestation"
+ },
+ "id": 34864,
+ "name": "Identifier",
+ "src": "18935:11:96"
+ }
+ ],
+ "id": 34865,
+ "name": "MemberAccess",
+ "src": "18935:18:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "issuedOn",
+ "referencedDeclaration": 33751,
+ "type": "uint64"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34757,
+ "type": "struct FederatedAttestations.OwnershipAttestation memory",
+ "value": "attestation"
+ },
+ "id": 34866,
+ "name": "Identifier",
+ "src": "18963:11:96"
+ }
+ ],
+ "id": 34867,
+ "name": "MemberAccess",
+ "src": "18963:20:96"
+ }
+ ],
+ "id": 34868,
+ "name": "FunctionCall",
+ "src": "18848:143:96"
+ }
+ ],
+ "id": 34869,
+ "name": "VariableDeclarationStatement",
+ "src": "18822:169:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "type": "bool"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33772,
+ "type": "mapping(bytes32 => bool)",
+ "value": "revokedAttestations"
+ },
+ "id": 34870,
+ "name": "Identifier",
+ "src": "18999:19:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34859,
+ "type": "bytes32",
+ "value": "attestationHash"
+ },
+ "id": 34871,
+ "name": "Identifier",
+ "src": "19019:15:96"
+ }
+ ],
+ "id": 34872,
+ "name": "IndexAccess",
+ "src": "18999:36:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "74727565",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "bool",
+ "type": "bool",
+ "value": "true"
+ },
+ "id": 34873,
+ "name": "Literal",
+ "src": "19038:4:96"
+ }
+ ],
+ "id": 34874,
+ "name": "Assignment",
+ "src": "18999:43:96"
+ }
+ ],
+ "id": 34875,
+ "name": "ExpressionStatement",
+ "src": "18999:43:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ },
+ {
+ "typeIdentifier": "t_uint64",
+ "typeString": "uint64"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 33821,
+ "type": "function (bytes32,address,address,address,uint64,uint64)",
+ "value": "AttestationRevoked"
+ },
+ "id": 34876,
+ "name": "Identifier",
+ "src": "19056:18:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34711,
+ "type": "bytes32",
+ "value": "identifier"
+ },
+ "id": 34877,
+ "name": "Identifier",
+ "src": "19084:10:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34713,
+ "type": "address",
+ "value": "issuer"
+ },
+ "id": 34878,
+ "name": "Identifier",
+ "src": "19104:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34715,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 34879,
+ "name": "Identifier",
+ "src": "19120:7:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "signer",
+ "referencedDeclaration": 33749,
+ "type": "address"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34757,
+ "type": "struct FederatedAttestations.OwnershipAttestation memory",
+ "value": "attestation"
+ },
+ "id": 34880,
+ "name": "Identifier",
+ "src": "19137:11:96"
+ }
+ ],
+ "id": 34881,
+ "name": "MemberAccess",
+ "src": "19137:18:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "issuedOn",
+ "referencedDeclaration": 33751,
+ "type": "uint64"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34757,
+ "type": "struct FederatedAttestations.OwnershipAttestation memory",
+ "value": "attestation"
+ },
+ "id": 34882,
+ "name": "Identifier",
+ "src": "19165:11:96"
+ }
+ ],
+ "id": 34883,
+ "name": "MemberAccess",
+ "src": "19165:20:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "publishedOn",
+ "referencedDeclaration": 33753,
+ "type": "uint64"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 34757,
+ "type": "struct FederatedAttestations.OwnershipAttestation memory",
+ "value": "attestation"
+ },
+ "id": 34884,
+ "name": "Identifier",
+ "src": "19195:11:96"
+ }
+ ],
+ "id": 34885,
+ "name": "MemberAccess",
+ "src": "19195:23:96"
+ }
+ ],
+ "id": 34886,
+ "name": "FunctionCall",
+ "src": "19056:170:96"
+ }
+ ],
+ "id": 34887,
+ "name": "EmitStatement",
+ "src": "19051:175:96"
+ },
+ {
+ "attributes": {
+ "expression": null,
+ "functionReturnParameters": 34717
+ },
+ "id": 34888,
+ "name": "Return",
+ "src": "19234:7:96"
+ }
+ ],
+ "id": 34889,
+ "name": "Block",
+ "src": "17739:1508:96"
+ }
+ ],
+ "id": 34890,
+ "name": "ForStatement",
+ "src": "17684:1563:96"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_bef54e0375bd2eecd9ac95b88792d3212418152ef73b8c0d6ef009ad5a6fb35f",
+ "typeString": "literal_string \"Attestation to be revoked does not exist\""
+ }
+ ],
+ "overloadedDeclarations": [
+ 42911,
+ 42912
+ ],
+ "referencedDeclaration": 42912,
+ "type": "function (string memory) pure",
+ "value": "revert"
+ },
+ "id": 34891,
+ "name": "Identifier",
+ "src": "19252:6:96"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "4174746573746174696f6e20746f206265207265766f6b656420646f6573206e6f74206578697374",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "string",
+ "type": "literal_string \"Attestation to be revoked does not exist\"",
+ "value": "Attestation to be revoked does not exist"
+ },
+ "id": 34892,
+ "name": "Literal",
+ "src": "19259:42:96"
+ }
+ ],
+ "id": 34893,
+ "name": "FunctionCall",
+ "src": "19252:50:96"
+ }
+ ],
+ "id": 34894,
+ "name": "ExpressionStatement",
+ "src": "19252:50:96"
+ }
+ ],
+ "id": 34895,
+ "name": "Block",
+ "src": "17531:1776:96"
+ }
+ ],
+ "id": 34896,
+ "name": "FunctionDefinition",
+ "src": "17442:1865:96"
+ }
+ ],
+ "id": 34897,
+ "name": "ContractDefinition",
+ "src": "604:18705:96"
+ }
+ ],
+ "id": 34898,
+ "name": "SourceUnit",
+ "src": "0:19310:96"
+ },
+ "compiler": {
+ "name": "solc",
+ "version": "0.5.13+commit.5b0b510c.Emscripten.clang"
+ },
+ "networks": {},
+ "schemaVersion": "3.4.7",
+ "updatedAt": "2022-09-23T16:17:10.933Z",
+ "devdoc": {
+ "methods": {
+ "batchRevokeAttestations(address,bytes32[],address[])": {
+ "details": "Throws if the number of identifiers and accounts is not the sameThrows if sender is not the issuer or currently registered signer of issuerThrows if an attestation is not found for identifiers[i] <-> accounts[i]",
+ "params": {
+ "accounts": "Addresses of the accounts mapped to the identifiers at the same indices",
+ "identifiers": "Hash of the identifiers",
+ "issuer": "Address of the issuer of all attestations to be revoked"
+ }
+ },
+ "constructor": {
+ "params": {
+ "test": "Set to true to skip implementation initialization"
+ }
+ },
+ "getVersionNumber()": {
+ "return": "The storage, major, minor, and patch version of the contract."
+ },
+ "isOwner()": {
+ "details": "Returns true if the caller is the current owner."
+ },
+ "lookupAttestations(bytes32,address[])": {
+ "details": "Adds attestation info to the arrays in order of provided trustedIssuersExpectation that only one attestation exists per (identifier, issuer, account)",
+ "params": {
+ "identifier": "Hash of the identifier",
+ "trustedIssuers": "Array of n issuers whose attestations will be included"
+ },
+ "return": "countsPerIssuer Array of number of attestations returned per issuer For m (== sum([0])) found attestations: accounts Array of m accounts signers Array of m signersissuedOns Array of m issuedOnspublishedOns Array of m publishedOns"
+ },
+ "lookupIdentifiers(address,address[])": {
+ "details": "Adds identifier info to the arrays in order of provided trustedIssuersExpectation that only one attestation exists per (identifier, issuer, account)",
+ "params": {
+ "account": "Address of the account",
+ "trustedIssuers": "Array of n issuers whose identifier mappings will be used"
+ },
+ "return": "countsPerIssuer Array of number of identifiers returned per issueridentifiers Array (length == sum([0])) of identifiers"
+ },
+ "owner()": {
+ "details": "Returns the address of the current owner."
+ },
+ "registerAttestation(bytes32,address,address,address,uint64,uint8,bytes32,bytes32)": {
+ "details": "Throws if an attestation with the same (identifier, issuer, account) already exists",
+ "params": {
+ "account": "Address of the account being mapped to the identifier",
+ "identifier": "Hash of the identifier to be attested",
+ "issuedOn": "Time at which the issuer issued the attestation in Unix time ",
+ "issuer": "Address of the attestation issuer",
+ "r": "Output value r of the ECDSA signature",
+ "s": "Output value s of the ECDSA signature",
+ "signer": "Address of the signer of the attestation",
+ "v": "The recovery id of the incoming ECDSA signature"
+ }
+ },
+ "registerAttestationAsIssuer(bytes32,address,uint64)": {
+ "details": "Attestation signer and issuer in storage is set to msg.senderThrows if an attestation with the same (identifier, issuer, account) already exists",
+ "params": {
+ "account": "Address of the account being mapped to the identifier",
+ "identifier": "Hash of the identifier to be attested",
+ "issuedOn": "Time at which the issuer issued the attestation in Unix time "
+ }
+ },
+ "renounceOwnership()": {
+ "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
+ },
+ "revokeAttestation(bytes32,address,address)": {
+ "details": "Throws if sender is not the issuer, signer, or account",
+ "params": {
+ "account": "Address of the account mapped to the identifier",
+ "identifier": "Hash of the identifier to be revoked",
+ "issuer": "Address of the attestation issuer"
+ }
+ },
+ "transferOwnership(address)": {
+ "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
+ },
+ "validateAttestationSig(bytes32,address,address,address,uint64,uint8,bytes32,bytes32)": {
+ "details": "Throws if attestation has been revokedThrows if signer is not an authorized AttestationSigner of the issuer",
+ "params": {
+ "account": "Address of the account being mapped to the identifier",
+ "identifier": "Hash of the identifier to be attested",
+ "issuedOn": "Time at which the issuer issued the attestation in Unix time ",
+ "issuer": "Address of the attestation issuer",
+ "r": "Output value r of the ECDSA signature",
+ "s": "Output value s of the ECDSA signature",
+ "signer": "Address of the signer of the attestation",
+ "v": "The recovery id of the incoming ECDSA signature"
+ }
+ }
+ },
+ "title": "Contract mapping identifiers to accounts"
+ },
+ "userdoc": {
+ "methods": {
+ "batchRevokeAttestations(address,bytes32[],address[])": {
+ "notice": "Revokes attestations [identifiers <-> accounts] from issuer"
+ },
+ "constructor": "Sets initialized == true on implementation contracts",
+ "getVersionNumber()": {
+ "notice": "Returns the storage, major, minor, and patch version of the contract."
+ },
+ "initialize()": {
+ "notice": "Used in place of the constructor to allow the contract to be upgradable via proxy."
+ },
+ "lookupAttestations(bytes32,address[])": {
+ "notice": "Returns info about attestations for `identifier` produced by signers of `trustedIssuers`"
+ },
+ "lookupIdentifiers(address,address[])": {
+ "notice": "Returns identifiers mapped to `account` by signers of `trustedIssuers`"
+ },
+ "registerAttestation(bytes32,address,address,address,uint64,uint8,bytes32,bytes32)": {
+ "notice": "Registers an attestation with a valid signature"
+ },
+ "registerAttestationAsIssuer(bytes32,address,uint64)": {
+ "notice": "Registers an attestation directly from the issuer"
+ },
+ "revokeAttestation(bytes32,address,address)": {
+ "notice": "Revokes an attestation "
+ },
+ "validateAttestationSig(bytes32,address,address,address,uint64,uint8,bytes32,bytes32)": {
+ "notice": "Validates the given attestation and signature"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/devtip/packages/react-app/abis/FederatedAttestationsProxy.json b/devtip/packages/react-app/abis/FederatedAttestationsProxy.json
new file mode 100644
index 00000000..31547c9d
--- /dev/null
+++ b/devtip/packages/react-app/abis/FederatedAttestationsProxy.json
@@ -0,0 +1,332 @@
+{
+ "contractName": "FederatedAttestationsProxy",
+ "abi": [
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "implementation",
+ "type": "address"
+ }
+ ],
+ "name": "ImplementationSet",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ }
+ ],
+ "name": "OwnerSet",
+ "type": "event"
+ },
+ {
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "fallback"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "_getImplementation",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "implementation",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "_getOwner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "implementation",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes",
+ "name": "callbackData",
+ "type": "bytes"
+ }
+ ],
+ "name": "_setAndInitializeImplementation",
+ "outputs": [],
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "implementation",
+ "type": "address"
+ }
+ ],
+ "name": "_setImplementation",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "_transferOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+ ],
+ "metadata": "{\"compiler\":{\"version\":\"0.5.13+commit.5b0b510c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ImplementationSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnerSet\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"_getOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callbackData\",\"type\":\"bytes\"}],\"name\":\"_setAndInitializeImplementation\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"_setImplementation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"_transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"_setAndInitializeImplementation(address,bytes)\":{\"details\":\"Throws if the initialization callback fails.If the target contract does not need initialization, use setImplementation instead.\",\"params\":{\"callbackData\":\"The abi-encoded function call to perform in the implementation contract.\",\"implementation\":\"Address of the new target contract.\"}},\"_setImplementation(address)\":{\"details\":\"If the target contract needs to be initialized, call setAndInitializeImplementation instead.\",\"params\":{\"implementation\":\"Address of the new target contract.\"}},\"_transferOwnership(address)\":{\"params\":{\"newOwner\":\"Address of the new owner account.\"}}}},\"userdoc\":{\"methods\":{\"_getImplementation()\":{\"notice\":\"Returns the implementation address.\"},\"_getOwner()\":{\"notice\":\"Returns the Proxy owner's address.\"},\"_setAndInitializeImplementation(address,bytes)\":{\"notice\":\"Sets the address of the implementation contract and calls into it.\"},\"_setImplementation(address)\":{\"notice\":\"Sets the address of the implementation contract.\"},\"_transferOwnership(address)\":{\"notice\":\"Transfers ownership of Proxy to a new owner.\"}}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/identity/proxies/FederatedAttestationsProxy.sol\":\"FederatedAttestationsProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"content\":\"pragma solidity ^0.5.5;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following \\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // According to EIP-1052, 0x0 is the value returned for not-yet created accounts\\n // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned\\n // for accounts without code, i.e. `keccak256('')`\\n bytes32 codehash;\\n bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;\\n // solhint-disable-next-line no-inline-assembly\\n assembly { codehash := extcodehash(account) }\\n return (codehash != accountHash && codehash != 0x0);\\n }\\n\\n /**\\n * @dev Converts an `address` into `address payable`. Note that this is\\n * simply a type cast: the actual underlying value is not changed.\\n *\\n * _Available since v2.4.0._\\n */\\n function toPayable(address account) internal pure returns (address payable) {\\n return address(uint160(account));\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n *\\n * _Available since v2.4.0._\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n // solhint-disable-next-line avoid-call-value\\n (bool success, ) = recipient.call.value(amount)(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n}\\n\",\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\"},\"project:/contracts/common/Proxy.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n/* solhint-disable no-inline-assembly, no-complex-fallback, avoid-low-level-calls */\\n\\nimport \\\"openzeppelin-solidity/contracts/utils/Address.sol\\\";\\n\\n/**\\n * @title A Proxy utilizing the Unstructured Storage pattern.\\n */\\ncontract Proxy {\\n // Used to store the address of the owner.\\n bytes32 private constant OWNER_POSITION = bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1);\\n // Used to store the address of the implementation contract.\\n bytes32 private constant IMPLEMENTATION_POSITION = bytes32(\\n uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1\\n );\\n\\n event OwnerSet(address indexed owner);\\n event ImplementationSet(address indexed implementation);\\n\\n constructor() public {\\n _setOwner(msg.sender);\\n }\\n\\n /**\\n * @notice Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n require(msg.sender == _getOwner(), \\\"sender was not owner\\\");\\n _;\\n }\\n\\n /**\\n * @notice Delegates calls to the implementation contract.\\n */\\n function() external payable {\\n bytes32 implementationPosition = IMPLEMENTATION_POSITION;\\n\\n address implementationAddress;\\n\\n // Load the address of the implementation contract from an explicit storage slot.\\n assembly {\\n implementationAddress := sload(implementationPosition)\\n }\\n\\n // Avoid checking if address is a contract or executing delegated call when\\n // implementation address is 0x0\\n require(implementationAddress != address(0), \\\"No Implementation set\\\");\\n require(Address.isContract(implementationAddress), \\\"Invalid contract address\\\");\\n\\n assembly {\\n // Extract the position of the transaction data (i.e. function ID and arguments).\\n let newCallDataPosition := mload(0x40)\\n mstore(0x40, add(newCallDataPosition, calldatasize))\\n calldatacopy(newCallDataPosition, 0, calldatasize)\\n\\n // Call the smart contract at `implementationAddress` in the context of the proxy contract,\\n // with the same msg.sender and value.\\n let delegatecallSuccess := delegatecall(\\n gas,\\n implementationAddress,\\n newCallDataPosition,\\n calldatasize,\\n 0,\\n 0\\n )\\n\\n // Copy the return value of the call so it can be returned.\\n let returnDataSize := returndatasize\\n let returnDataPosition := mload(0x40)\\n mstore(0x40, add(returnDataPosition, returnDataSize))\\n returndatacopy(returnDataPosition, 0, returnDataSize)\\n\\n // Revert or return depending on whether or not the call was successful.\\n switch delegatecallSuccess\\n case 0 {\\n revert(returnDataPosition, returnDataSize)\\n }\\n default {\\n return(returnDataPosition, returnDataSize)\\n }\\n }\\n }\\n\\n /**\\n * @notice Transfers ownership of Proxy to a new owner.\\n * @param newOwner Address of the new owner account.\\n */\\n function _transferOwnership(address newOwner) external onlyOwner {\\n _setOwner(newOwner);\\n }\\n\\n /**\\n * @notice Sets the address of the implementation contract and calls into it.\\n * @param implementation Address of the new target contract.\\n * @param callbackData The abi-encoded function call to perform in the implementation\\n * contract.\\n * @dev Throws if the initialization callback fails.\\n * @dev If the target contract does not need initialization, use\\n * setImplementation instead.\\n */\\n function _setAndInitializeImplementation(address implementation, bytes calldata callbackData)\\n external\\n payable\\n onlyOwner\\n {\\n _setImplementation(implementation);\\n bool success;\\n bytes memory returnValue;\\n (success, returnValue) = implementation.delegatecall(callbackData);\\n require(success, \\\"initialization callback failed\\\");\\n }\\n\\n /**\\n * @notice Returns the implementation address.\\n */\\n function _getImplementation() external view returns (address implementation) {\\n bytes32 implementationPosition = IMPLEMENTATION_POSITION;\\n // Load the address of the implementation contract from an explicit storage slot.\\n assembly {\\n implementation := sload(implementationPosition)\\n }\\n }\\n\\n /**\\n * @notice Sets the address of the implementation contract.\\n * @param implementation Address of the new target contract.\\n * @dev If the target contract needs to be initialized, call\\n * setAndInitializeImplementation instead.\\n */\\n function _setImplementation(address implementation) public onlyOwner {\\n bytes32 implementationPosition = IMPLEMENTATION_POSITION;\\n\\n require(Address.isContract(implementation), \\\"Invalid contract address\\\");\\n\\n // Store the address of the implementation contract in an explicit storage slot.\\n assembly {\\n sstore(implementationPosition, implementation)\\n }\\n\\n emit ImplementationSet(implementation);\\n }\\n\\n /**\\n * @notice Returns the Proxy owner's address.\\n */\\n function _getOwner() public view returns (address owner) {\\n bytes32 position = OWNER_POSITION;\\n // Load the address of the contract owner from an explicit storage slot.\\n assembly {\\n owner := sload(position)\\n }\\n }\\n\\n function _setOwner(address newOwner) internal {\\n require(newOwner != address(0), \\\"owner cannot be 0\\\");\\n bytes32 position = OWNER_POSITION;\\n // Store the address of the contract owner in an explicit storage slot.\\n assembly {\\n sstore(position, newOwner)\\n }\\n emit OwnerSet(newOwner);\\n }\\n}\\n\",\"keccak256\":\"0x650f2a079da45a71970749c9039dece5986835225035b29eca4df1c1dab0d6ac\"},\"project:/contracts/identity/proxies/FederatedAttestationsProxy.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"../../common/Proxy.sol\\\";\\n\\n/* solhint-disable no-empty-blocks */\\ncontract FederatedAttestationsProxy is Proxy {}\\n\",\"keccak256\":\"0x2344915156ed90706c03e15bae3ec79266e322a00fed8b1ec0b758062cf285cf\"}},\"version\":1}",
+ "bytecode": "0x60806040526100133361001860201b60201c565b610148565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6f776e65722063616e6e6f74206265203000000000000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b90508181558173ffffffffffffffffffffffffffffffffffffffff167f50146d0e3c60aa1d17a70635b05494f864e86144a2201275021014fbf08bafe260405160405180910390a25050565b610a22806101576000396000f3fe60806040526004361061004a5760003560e01c806303386ba3146101e757806342404e0714610280578063bb913f41146102d7578063d29d44ee14610328578063f7e6af8014610379575b6000600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050600081549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610136576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4e6f20496d706c656d656e746174696f6e20736574000000000000000000000081525060200191505060405180910390fd5b61013f816103d0565b6101b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420636f6e74726163742061646472657373000000000000000081525060200191505060405180910390fd5b60405136810160405236600082376000803683855af43d604051818101604052816000823e82600081146101e3578282f35b8282fd5b61027e600480360360408110156101fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561023a57600080fd5b82018360208201111561024c57600080fd5b8035906020019184600183028401116401000000008311171561026e57600080fd5b909192939192939050505061041b565b005b34801561028c57600080fd5b506102956105c1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e357600080fd5b50610326600480360360208110156102fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061060d565b005b34801561033457600080fd5b506103776004803603602081101561034b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107bd565b005b34801561038557600080fd5b5061038e610871565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561041257506000801b8214155b92505050919050565b610423610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6104cc8361060d565b600060608473ffffffffffffffffffffffffffffffffffffffff168484604051808383808284378083019250505092505050600060405180830381855af49150503d8060008114610539576040519150601f19603f3d011682016040523d82523d6000602084013e61053e565b606091505b508092508193505050816105ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f696e697469616c697a6174696f6e2063616c6c6261636b206661696c6564000081525060200191505060405180910390fd5b5050505050565b600080600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050805491505090565b610615610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050610701826103d0565b610773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420636f6e74726163742061646472657373000000000000000081525060200191505060405180910390fd5b8181558173ffffffffffffffffffffffffffffffffffffffff167fab64f92ab780ecbf4f3866f57cee465ff36c89450dcce20237ca7a8d81fb7d1360405160405180910390a25050565b6107c5610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610865576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b61086e816108bd565b50565b600080600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b9050805491505090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6f776e65722063616e6e6f74206265203000000000000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b90508181558173ffffffffffffffffffffffffffffffffffffffff167f50146d0e3c60aa1d17a70635b05494f864e86144a2201275021014fbf08bafe260405160405180910390a2505056fea265627a7a723158201f360b2073049027ee6dff953924a82580d1ee78410cfe75033bb48b8059db5c64736f6c634300050d0032",
+ "deployedBytecode": "0x60806040526004361061004a5760003560e01c806303386ba3146101e757806342404e0714610280578063bb913f41146102d7578063d29d44ee14610328578063f7e6af8014610379575b6000600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050600081549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610136576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4e6f20496d706c656d656e746174696f6e20736574000000000000000000000081525060200191505060405180910390fd5b61013f816103d0565b6101b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420636f6e74726163742061646472657373000000000000000081525060200191505060405180910390fd5b60405136810160405236600082376000803683855af43d604051818101604052816000823e82600081146101e3578282f35b8282fd5b61027e600480360360408110156101fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561023a57600080fd5b82018360208201111561024c57600080fd5b8035906020019184600183028401116401000000008311171561026e57600080fd5b909192939192939050505061041b565b005b34801561028c57600080fd5b506102956105c1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e357600080fd5b50610326600480360360208110156102fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061060d565b005b34801561033457600080fd5b506103776004803603602081101561034b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107bd565b005b34801561038557600080fd5b5061038e610871565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561041257506000801b8214155b92505050919050565b610423610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6104cc8361060d565b600060608473ffffffffffffffffffffffffffffffffffffffff168484604051808383808284378083019250505092505050600060405180830381855af49150503d8060008114610539576040519150601f19603f3d011682016040523d82523d6000602084013e61053e565b606091505b508092508193505050816105ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f696e697469616c697a6174696f6e2063616c6c6261636b206661696c6564000081525060200191505060405180910390fd5b5050505050565b600080600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050805491505090565b610615610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050610701826103d0565b610773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420636f6e74726163742061646472657373000000000000000081525060200191505060405180910390fd5b8181558173ffffffffffffffffffffffffffffffffffffffff167fab64f92ab780ecbf4f3866f57cee465ff36c89450dcce20237ca7a8d81fb7d1360405160405180910390a25050565b6107c5610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610865576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b61086e816108bd565b50565b600080600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b9050805491505090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6f776e65722063616e6e6f74206265203000000000000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b90508181558173ffffffffffffffffffffffffffffffffffffffff167f50146d0e3c60aa1d17a70635b05494f864e86144a2201275021014fbf08bafe260405160405180910390a2505056fea265627a7a723158201f360b2073049027ee6dff953924a82580d1ee78410cfe75033bb48b8059db5c64736f6c634300050d0032",
+ "sourceMap": "98:47:108:-;;;724:21:22;734:10;724:9;;;:21;;:::i;:::-;98:47:108;;5050:307:22;5130:1;5110:22;;:8;:22;;;;5102:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5160:16;400:1;364:32;;;;;;;;;;;;;;;;;;;356:41;;:45;348:54;;5160:33;;5309:8;5299;5292:26;5343:8;5334:18;;;;;;;;;;;;5050:307;;:::o;98:47:108:-;;;;;;;",
+ "deployedSourceMap": "98:47:108:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1041:30:22;586:1;541:41;;;;;;;;;;;;;;;;;;;533:50;;:54;520:71;;1041:56;;1104:29;1274:22;1268:29;1243:54;;1467:1;1434:35;;:21;:35;;;;1426:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1509:41;1528:21;1509:18;:41::i;:::-;1501:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1724:4;1718:11;1774:12;1753:19;1749:38;1743:4;1736:52;1832:12;1829:1;1808:19;1795:50;2151:1;2140;2118:12;2089:19;2058:21;2045:3;2023:137;2256:14;2309:4;2303:11;2358:14;2338:18;2334:39;2328:4;2321:53;2419:14;2416:1;2396:18;2381:53;2528:19;2561:1;2556:71;;;;2683:14;2663:18;2656:42;2556:71;2602:14;2582:18;2575:42;3358:356;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3358:356:22;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;3358:356:22;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3358:356:22;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3358:356:22;;;;;;;;;;;;:::i;:::-;;3779:305;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3779:305:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4333:419;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4333:419:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4333:419:22;;;;;;;;;;;;;;;;;;;:::i;:::-;;2847:95;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2847:95:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2847:95:22;;;;;;;;;;;;;;;;;;;:::i;:::-;;4816:230;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4816:230:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;686:610:8;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o;3358:356:22:-;882:11;:9;:11::i;:::-;868:25;;:10;:25;;;860:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3499:34;3518:14;3499:18;:34::i;:::-;3539:12;3557:24;3612:14;:27;;3640:12;;3612:41;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;3612:41:22;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3587:66:22;;;;;;;;3667:7;3659:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;924:1;;3358:356;;;:::o;3779:305::-;3832:22;3862:30;586:1;541:41;;;;;;;;;;;;;;;;;;;533:50;;:54;520:71;;3862:56;;4051:22;4045:29;4027:47;;4019:61;;:::o;4333:419::-;882:11;:9;:11::i;:::-;868:25;;:10;:25;;;860:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4408:30;586:1;541:41;;;;;;;;;;;;;;;;;;;533:50;;:54;520:71;;4408:56;;4479:34;4498:14;4479:18;:34::i;:::-;4471:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4682:14;4658:22;4651:46;4732:14;4714:33;;;;;;;;;;;;924:1;4333:419;:::o;2847:95::-;882:11;:9;:11::i;:::-;868:25;;:10;:25;;;860:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2918:19;2928:8;2918:9;:19::i;:::-;2847:95;:::o;4816:230::-;4858:13;4879:16;400:1;364:32;;;;;;;;;;;;;;;;;;;356:41;;:45;348:54;;4879:33;;5027:8;5021:15;5012:24;;5004:38;;:::o;5050:307::-;5130:1;5110:22;;:8;:22;;;;5102:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5160:16;400:1;364:32;;;;;;;;;;;;;;;;;;;356:41;;:45;348:54;;5160:33;;5309:8;5299;5292:26;5343:8;5334:18;;;;;;;;;;;;5050:307;;:::o",
+ "source": "pragma solidity ^0.5.13;\n\nimport \"../../common/Proxy.sol\";\n\n/* solhint-disable no-empty-blocks */\ncontract FederatedAttestationsProxy is Proxy {}\n",
+ "sourcePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/identity/proxies/FederatedAttestationsProxy.sol",
+ "ast": {
+ "absolutePath": "project:/contracts/identity/proxies/FederatedAttestationsProxy.sol",
+ "exportedSymbols": {
+ "FederatedAttestationsProxy": [
+ 36217
+ ]
+ },
+ "id": 36218,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 36213,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".13"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:108"
+ },
+ {
+ "absolutePath": "project:/contracts/common/Proxy.sol",
+ "file": "../../common/Proxy.sol",
+ "id": 36214,
+ "nodeType": "ImportDirective",
+ "scope": 36218,
+ "sourceUnit": 6778,
+ "src": "26:32:108",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "baseContracts": [
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 36215,
+ "name": "Proxy",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 6777,
+ "src": "137:5:108",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Proxy_$6777",
+ "typeString": "contract Proxy"
+ }
+ },
+ "id": 36216,
+ "nodeType": "InheritanceSpecifier",
+ "src": "137:5:108"
+ }
+ ],
+ "contractDependencies": [
+ 6777
+ ],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "id": 36217,
+ "linearizedBaseContracts": [
+ 36217,
+ 6777
+ ],
+ "name": "FederatedAttestationsProxy",
+ "nodeType": "ContractDefinition",
+ "nodes": [],
+ "scope": 36218,
+ "src": "98:47:108"
+ }
+ ],
+ "src": "0:146:108"
+ },
+ "legacyAST": {
+ "attributes": {
+ "absolutePath": "project:/contracts/identity/proxies/FederatedAttestationsProxy.sol",
+ "exportedSymbols": {
+ "FederatedAttestationsProxy": [
+ 36217
+ ]
+ }
+ },
+ "children": [
+ {
+ "attributes": {
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".13"
+ ]
+ },
+ "id": 36213,
+ "name": "PragmaDirective",
+ "src": "0:24:108"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 6778,
+ "absolutePath": "project:/contracts/common/Proxy.sol",
+ "file": "../../common/Proxy.sol",
+ "scope": 36218,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 36214,
+ "name": "ImportDirective",
+ "src": "26:32:108"
+ },
+ {
+ "attributes": {
+ "contractDependencies": [
+ 6777
+ ],
+ "contractKind": "contract",
+ "documentation": null,
+ "fullyImplemented": true,
+ "linearizedBaseContracts": [
+ 36217,
+ 6777
+ ],
+ "name": "FederatedAttestationsProxy",
+ "nodes": [
+ null
+ ],
+ "scope": 36218
+ },
+ "children": [
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "Proxy",
+ "referencedDeclaration": 6777,
+ "type": "contract Proxy"
+ },
+ "id": 36215,
+ "name": "UserDefinedTypeName",
+ "src": "137:5:108"
+ }
+ ],
+ "id": 36216,
+ "name": "InheritanceSpecifier",
+ "src": "137:5:108"
+ }
+ ],
+ "id": 36217,
+ "name": "ContractDefinition",
+ "src": "98:47:108"
+ }
+ ],
+ "id": 36218,
+ "name": "SourceUnit",
+ "src": "0:146:108"
+ },
+ "compiler": {
+ "name": "solc",
+ "version": "0.5.13+commit.5b0b510c.Emscripten.clang"
+ },
+ "networks": {},
+ "schemaVersion": "3.4.7",
+ "updatedAt": "2022-09-23T16:17:10.955Z",
+ "devdoc": {
+ "methods": {
+ "_setAndInitializeImplementation(address,bytes)": {
+ "details": "Throws if the initialization callback fails.If the target contract does not need initialization, use setImplementation instead.",
+ "params": {
+ "callbackData": "The abi-encoded function call to perform in the implementation contract.",
+ "implementation": "Address of the new target contract."
+ }
+ },
+ "_setImplementation(address)": {
+ "details": "If the target contract needs to be initialized, call setAndInitializeImplementation instead.",
+ "params": {
+ "implementation": "Address of the new target contract."
+ }
+ },
+ "_transferOwnership(address)": {
+ "params": {
+ "newOwner": "Address of the new owner account."
+ }
+ }
+ }
+ },
+ "userdoc": {
+ "methods": {
+ "_getImplementation()": {
+ "notice": "Returns the implementation address."
+ },
+ "_getOwner()": {
+ "notice": "Returns the Proxy owner's address."
+ },
+ "_setAndInitializeImplementation(address,bytes)": {
+ "notice": "Sets the address of the implementation contract and calls into it."
+ },
+ "_setImplementation(address)": {
+ "notice": "Sets the address of the implementation contract."
+ },
+ "_transferOwnership(address)": {
+ "notice": "Transfers ownership of Proxy to a new owner."
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/devtip/packages/react-app/abis/OdisPayments.json b/devtip/packages/react-app/abis/OdisPayments.json
new file mode 100644
index 00000000..5c15d4b3
--- /dev/null
+++ b/devtip/packages/react-app/abis/OdisPayments.json
@@ -0,0 +1,3363 @@
+{
+ "contractName": "OdisPayments",
+ "abi": [
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "test",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousOwner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "OwnershipTransferred",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "valueInCUSD",
+ "type": "uint256"
+ }
+ ],
+ "name": "PaymentMade",
+ "type": "event"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "initialized",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isOwner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "owner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "registryContract",
+ "outputs": [
+ {
+ "internalType": "contract IRegistry",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "renounceOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "name": "totalPaidCUSD",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "transferOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "getVersionNumber",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "pure",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "initialize",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "payInCUSD",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+ ],
+ "metadata": "{\"compiler\":{\"version\":\"0.5.13+commit.5b0b510c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"test\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"valueInCUSD\",\"type\":\"uint256\"}],\"name\":\"PaymentMade\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"getVersionNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"payInCUSD\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"registryContract\",\"outputs\":[{\"internalType\":\"contract IRegistry\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"totalPaidCUSD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"constructor\":{\"params\":{\"test\":\"Set to true to skip implementation initialization.\"}},\"getVersionNumber()\":{\"return\":\"Storage version of the contract.Major version of the contract.Minor version of the contract.Patch version of the contract.\"},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"payInCUSD(address,uint256)\":{\"details\":\"Throws if cUSD transfer fails.\",\"params\":{\"account\":\"The account whose balance to increment.\",\"value\":\"The amount in cUSD to pay.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"Stores balance to be used for ODIS quota calculation.\"},\"userdoc\":{\"methods\":{\"constructor\":\"Sets initialized == true on implementation contracts.\",\"getVersionNumber()\":{\"notice\":\"Returns the storage, major, minor, and patch version of the contract.\"},\"initialize()\":{\"notice\":\"Used in place of the constructor to allow the contract to be upgradable via proxy.\"},\"payInCUSD(address,uint256)\":{\"notice\":\"Sends cUSD to this contract to pay for ODIS quota (for queries).\"}}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/identity/OdisPayments.sol\":\"OdisPayments\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with GSN meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\ncontract Context {\\n // Empty internal constructor, to prevent people from mistakenly deploying\\n // an instance of this contract, which should be used via inheritance.\\n constructor () internal { }\\n // solhint-disable-previous-line no-empty-blocks\\n\\n function _msgSender() internal view returns (address payable) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view returns (bytes memory) {\\n this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\"},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\\n * checks.\\n *\\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\\n * in bugs, because programmers usually assume that an overflow raises an\\n * error, which is the standard behavior in high level programming languages.\\n * `SafeMath` restores this intuition by reverting the transaction when an\\n * operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n */\\nlibrary SafeMath {\\n /**\\n * @dev Returns the addition of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `+` operator.\\n *\\n * Requirements:\\n * - Addition cannot overflow.\\n */\\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n uint256 c = a + b;\\n require(c >= a, \\\"SafeMath: addition overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n */\\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n return sub(a, b, \\\"SafeMath: subtraction overflow\\\");\\n }\\n\\n /**\\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n * overflow (when the result is negative).\\n *\\n * Counterpart to Solidity's `-` operator.\\n *\\n * Requirements:\\n * - Subtraction cannot overflow.\\n *\\n * _Available since v2.4.0._\\n */\\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b <= a, errorMessage);\\n uint256 c = a - b;\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the multiplication of two unsigned integers, reverting on\\n * overflow.\\n *\\n * Counterpart to Solidity's `*` operator.\\n *\\n * Requirements:\\n * - Multiplication cannot overflow.\\n */\\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n // benefit is lost if 'b' is also tested.\\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n if (a == 0) {\\n return 0;\\n }\\n\\n uint256 c = a * b;\\n require(c / a == b, \\\"SafeMath: multiplication overflow\\\");\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n */\\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n return div(a, b, \\\"SafeMath: division by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the integer division of two unsigned integers. Reverts with custom message on\\n * division by zero. The result is rounded towards zero.\\n *\\n * Counterpart to Solidity's `/` operator. Note: this function uses a\\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n * uses an invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n // Solidity only automatically asserts when dividing by 0\\n require(b > 0, errorMessage);\\n uint256 c = a / b;\\n // assert(a == b * c + a % b); // There is no case in which this doesn't hold\\n\\n return c;\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n */\\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n return mod(a, b, \\\"SafeMath: modulo by zero\\\");\\n }\\n\\n /**\\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n * Reverts with custom message when dividing by zero.\\n *\\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n * opcode (which leaves remaining gas untouched) while Solidity uses an\\n * invalid opcode to revert (consuming all remaining gas).\\n *\\n * Requirements:\\n * - The divisor cannot be zero.\\n *\\n * _Available since v2.4.0._\\n */\\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n require(b != 0, errorMessage);\\n return a % b;\\n }\\n}\\n\",\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\"},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\nimport \\\"../GSN/Context.sol\\\";\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\ncontract Ownable is Context {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n constructor () internal {\\n address msgSender = _msgSender();\\n _owner = msgSender;\\n emit OwnershipTransferred(address(0), msgSender);\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n require(isOwner(), \\\"Ownable: caller is not the owner\\\");\\n _;\\n }\\n\\n /**\\n * @dev Returns true if the caller is the current owner.\\n */\\n function isOwner() public view returns (bool) {\\n return _msgSender() == _owner;\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions anymore. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby removing any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public onlyOwner {\\n emit OwnershipTransferred(_owner, address(0));\\n _owner = address(0);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public onlyOwner {\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n */\\n function _transferOwnership(address newOwner) internal {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n emit OwnershipTransferred(_owner, newOwner);\\n _owner = newOwner;\\n }\\n}\\n\",\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\"},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP. Does not include\\n * the optional functions; to access them see {ERC20Detailed}.\\n */\\ninterface IERC20 {\\n /**\\n * @dev Returns the amount of tokens in existence.\\n */\\n function totalSupply() external view returns (uint256);\\n\\n /**\\n * @dev Returns the amount of tokens owned by `account`.\\n */\\n function balanceOf(address account) external view returns (uint256);\\n\\n /**\\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Returns the remaining number of tokens that `spender` will be\\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n * zero by default.\\n *\\n * This value changes when {approve} or {transferFrom} are called.\\n */\\n function allowance(address owner, address spender) external view returns (uint256);\\n\\n /**\\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n * that someone may use both the old and the new allowance by unfortunate\\n * transaction ordering. One possible solution to mitigate this race\\n * condition is to first reduce the spender's allowance to 0 and set the\\n * desired value afterwards:\\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address spender, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n * allowance mechanism. `amount` is then deducted from the caller's\\n * allowance.\\n *\\n * Returns a boolean value indicating whether the operation succeeded.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n\\n /**\\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n * another (`to`).\\n *\\n * Note that `value` may be zero.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n /**\\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n * a call to {approve}. `value` is the new allowance.\\n */\\n event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\"},\"openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"content\":\"pragma solidity ^0.5.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"../../math/SafeMath.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n using SafeMath for uint256;\\n using Address for address;\\n\\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n }\\n\\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n }\\n\\n function safeApprove(IERC20 token, address spender, uint256 value) internal {\\n // safeApprove should only be called when setting an initial allowance,\\n // or when resetting it to zero. To increase and decrease it, use\\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n // solhint-disable-next-line max-line-length\\n require((value == 0) || (token.allowance(address(this), spender) == 0),\\n \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n );\\n callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n }\\n\\n function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n uint256 newAllowance = token.allowance(address(this), spender).add(value);\\n callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n\\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n uint256 newAllowance = token.allowance(address(this), spender).sub(value, \\\"SafeERC20: decreased allowance below zero\\\");\\n callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n }\\n\\n /**\\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n * on the return value: the return value is optional (but if data is returned, it must not be false).\\n * @param token The token targeted by the call.\\n * @param data The call data (encoded using abi.encode or one of its variants).\\n */\\n function callOptionalReturn(IERC20 token, bytes memory data) private {\\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n // we're implementing it ourselves.\\n\\n // A Solidity high level call has three parts:\\n // 1. The target address is checked to verify it contains contract code\\n // 2. The call itself is made, and success asserted\\n // 3. The return value is decoded, which in turn checks the size of the returned data.\\n // solhint-disable-next-line max-line-length\\n require(address(token).isContract(), \\\"SafeERC20: call to non-contract\\\");\\n\\n // solhint-disable-next-line avoid-low-level-calls\\n (bool success, bytes memory returndata) = address(token).call(data);\\n require(success, \\\"SafeERC20: low-level call failed\\\");\\n\\n if (returndata.length > 0) { // Return data is optional\\n // solhint-disable-next-line max-line-length\\n require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n }\\n }\\n}\\n\",\"keccak256\":\"0x6f2c9955d65c522b80f4b8792f076512d2df947d2112cbc4d98a4781ed42ede2\"},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"content\":\"pragma solidity ^0.5.5;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following \\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // According to EIP-1052, 0x0 is the value returned for not-yet created accounts\\n // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned\\n // for accounts without code, i.e. `keccak256('')`\\n bytes32 codehash;\\n bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;\\n // solhint-disable-next-line no-inline-assembly\\n assembly { codehash := extcodehash(account) }\\n return (codehash != accountHash && codehash != 0x0);\\n }\\n\\n /**\\n * @dev Converts an `address` into `address payable`. Note that this is\\n * simply a type cast: the actual underlying value is not changed.\\n *\\n * _Available since v2.4.0._\\n */\\n function toPayable(address account) internal pure returns (address payable) {\\n return address(uint160(account));\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n *\\n * _Available since v2.4.0._\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n // solhint-disable-next-line avoid-call-value\\n (bool success, ) = recipient.call.value(amount)(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n}\\n\",\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\"},\"project:/contracts/common/Initializable.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ncontract Initializable {\\n bool public initialized;\\n\\n constructor(bool testingDeployment) public {\\n if (!testingDeployment) {\\n initialized = true;\\n }\\n }\\n\\n modifier initializer() {\\n require(!initialized, \\\"contract already initialized\\\");\\n initialized = true;\\n _;\\n }\\n}\\n\",\"keccak256\":\"0xad98825b5d3181f4ce2d2dbe84adeb0cd7960fd80fafb0813539d6d96ba42ab8\"},\"project:/contracts/common/UsingRegistryV2.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"openzeppelin-solidity/contracts/ownership/Ownable.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\\\";\\n\\nimport \\\"./interfaces/IAccounts.sol\\\";\\nimport \\\"./interfaces/IFeeCurrencyWhitelist.sol\\\";\\nimport \\\"./interfaces/IFreezer.sol\\\";\\nimport \\\"./interfaces/IRegistry.sol\\\";\\n\\nimport \\\"../governance/interfaces/IElection.sol\\\";\\nimport \\\"../governance/interfaces/IGovernance.sol\\\";\\nimport \\\"../governance/interfaces/ILockedGold.sol\\\";\\nimport \\\"../governance/interfaces/IValidators.sol\\\";\\n\\nimport \\\"../identity/interfaces/IRandom.sol\\\";\\nimport \\\"../identity/interfaces/IAttestations.sol\\\";\\nimport \\\"../identity/interfaces/IFederatedAttestations.sol\\\";\\n\\nimport \\\"../stability/interfaces/IExchange.sol\\\";\\nimport \\\"../stability/interfaces/IReserve.sol\\\";\\nimport \\\"../stability/interfaces/ISortedOracles.sol\\\";\\nimport \\\"../stability/interfaces/IStableToken.sol\\\";\\n\\ncontract UsingRegistryV2 {\\n address internal constant registryAddress = 0x000000000000000000000000000000000000ce10;\\n IRegistry public constant registryContract = IRegistry(registryAddress);\\n\\n bytes32 internal constant ACCOUNTS_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Accounts\\\"));\\n bytes32 internal constant ATTESTATIONS_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Attestations\\\"));\\n bytes32 internal constant DOWNTIME_SLASHER_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"DowntimeSlasher\\\")\\n );\\n bytes32 internal constant DOUBLE_SIGNING_SLASHER_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"DoubleSigningSlasher\\\")\\n );\\n bytes32 internal constant ELECTION_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Election\\\"));\\n bytes32 internal constant EXCHANGE_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Exchange\\\"));\\n bytes32 internal constant EXCHANGE_EURO_REGISTRY_ID = keccak256(abi.encodePacked(\\\"ExchangeEUR\\\"));\\n bytes32 internal constant EXCHANGE_REAL_REGISTRY_ID = keccak256(abi.encodePacked(\\\"ExchangeBRL\\\"));\\n\\n bytes32 internal constant FEE_CURRENCY_WHITELIST_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"FeeCurrencyWhitelist\\\")\\n );\\n bytes32 internal constant FEDERATED_ATTESTATIONS_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"FederatedAttestations\\\")\\n );\\n bytes32 internal constant FREEZER_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Freezer\\\"));\\n bytes32 internal constant GOLD_TOKEN_REGISTRY_ID = keccak256(abi.encodePacked(\\\"GoldToken\\\"));\\n bytes32 internal constant GOVERNANCE_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Governance\\\"));\\n bytes32 internal constant GOVERNANCE_SLASHER_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"GovernanceSlasher\\\")\\n );\\n bytes32 internal constant LOCKED_GOLD_REGISTRY_ID = keccak256(abi.encodePacked(\\\"LockedGold\\\"));\\n bytes32 internal constant RESERVE_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Reserve\\\"));\\n bytes32 internal constant RANDOM_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Random\\\"));\\n bytes32 internal constant SORTED_ORACLES_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"SortedOracles\\\")\\n );\\n bytes32 internal constant STABLE_TOKEN_REGISTRY_ID = keccak256(abi.encodePacked(\\\"StableToken\\\"));\\n bytes32 internal constant STABLE_EURO_TOKEN_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"StableTokenEUR\\\")\\n );\\n bytes32 internal constant STABLE_REAL_TOKEN_REGISTRY_ID = keccak256(\\n abi.encodePacked(\\\"StableTokenBRL\\\")\\n );\\n bytes32 internal constant VALIDATORS_REGISTRY_ID = keccak256(abi.encodePacked(\\\"Validators\\\"));\\n\\n modifier onlyRegisteredContract(bytes32 identifierHash) {\\n require(\\n registryContract.getAddressForOrDie(identifierHash) == msg.sender,\\n \\\"only registered contract\\\"\\n );\\n _;\\n }\\n\\n modifier onlyRegisteredContracts(bytes32[] memory identifierHashes) {\\n require(registryContract.isOneOf(identifierHashes, msg.sender), \\\"only registered contracts\\\");\\n _;\\n }\\n\\n function getAccounts() internal view returns (IAccounts) {\\n return IAccounts(registryContract.getAddressForOrDie(ACCOUNTS_REGISTRY_ID));\\n }\\n\\n function getAttestations() internal view returns (IAttestations) {\\n return IAttestations(registryContract.getAddressForOrDie(ATTESTATIONS_REGISTRY_ID));\\n }\\n\\n function getElection() internal view returns (IElection) {\\n return IElection(registryContract.getAddressForOrDie(ELECTION_REGISTRY_ID));\\n }\\n\\n function getExchange() internal view returns (IExchange) {\\n return IExchange(registryContract.getAddressForOrDie(EXCHANGE_REGISTRY_ID));\\n }\\n\\n function getExchangeDollar() internal view returns (IExchange) {\\n return getExchange();\\n }\\n\\n function getExchangeEuro() internal view returns (IExchange) {\\n return IExchange(registryContract.getAddressForOrDie(EXCHANGE_EURO_REGISTRY_ID));\\n }\\n\\n function getExchangeREAL() internal view returns (IExchange) {\\n return IExchange(registryContract.getAddressForOrDie(EXCHANGE_REAL_REGISTRY_ID));\\n }\\n\\n function getFeeCurrencyWhitelistRegistry() internal view returns (IFeeCurrencyWhitelist) {\\n return\\n IFeeCurrencyWhitelist(\\n registryContract.getAddressForOrDie(FEE_CURRENCY_WHITELIST_REGISTRY_ID)\\n );\\n }\\n\\n function getFederatedAttestations() internal view returns (IFederatedAttestations) {\\n return\\n IFederatedAttestations(\\n registryContract.getAddressForOrDie(FEDERATED_ATTESTATIONS_REGISTRY_ID)\\n );\\n }\\n\\n function getFreezer() internal view returns (IFreezer) {\\n return IFreezer(registryContract.getAddressForOrDie(FREEZER_REGISTRY_ID));\\n }\\n\\n function getGoldToken() internal view returns (IERC20) {\\n return IERC20(registryContract.getAddressForOrDie(GOLD_TOKEN_REGISTRY_ID));\\n }\\n\\n function getGovernance() internal view returns (IGovernance) {\\n return IGovernance(registryContract.getAddressForOrDie(GOVERNANCE_REGISTRY_ID));\\n }\\n\\n function getLockedGold() internal view returns (ILockedGold) {\\n return ILockedGold(registryContract.getAddressForOrDie(LOCKED_GOLD_REGISTRY_ID));\\n }\\n\\n function getRandom() internal view returns (IRandom) {\\n return IRandom(registryContract.getAddressForOrDie(RANDOM_REGISTRY_ID));\\n }\\n\\n function getReserve() internal view returns (IReserve) {\\n return IReserve(registryContract.getAddressForOrDie(RESERVE_REGISTRY_ID));\\n }\\n\\n function getSortedOracles() internal view returns (ISortedOracles) {\\n return ISortedOracles(registryContract.getAddressForOrDie(SORTED_ORACLES_REGISTRY_ID));\\n }\\n\\n function getStableToken() internal view returns (IStableToken) {\\n return IStableToken(registryContract.getAddressForOrDie(STABLE_TOKEN_REGISTRY_ID));\\n }\\n\\n function getStableDollarToken() internal view returns (IStableToken) {\\n return getStableToken();\\n }\\n\\n function getStableEuroToken() internal view returns (IStableToken) {\\n return IStableToken(registryContract.getAddressForOrDie(STABLE_EURO_TOKEN_REGISTRY_ID));\\n }\\n\\n function getStableRealToken() internal view returns (IStableToken) {\\n return IStableToken(registryContract.getAddressForOrDie(STABLE_REAL_TOKEN_REGISTRY_ID));\\n }\\n\\n function getValidators() internal view returns (IValidators) {\\n return IValidators(registryContract.getAddressForOrDie(VALIDATORS_REGISTRY_ID));\\n }\\n}\\n\",\"keccak256\":\"0x074e1bd4e0d4a0010ef904a13af1da8590b998ce568054b1f10a2a7af4120372\"},\"project:/contracts/common/interfaces/IAccounts.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IAccounts {\\n function isAccount(address) external view returns (bool);\\n function voteSignerToAccount(address) external view returns (address);\\n function validatorSignerToAccount(address) external view returns (address);\\n function attestationSignerToAccount(address) external view returns (address);\\n function signerToAccount(address) external view returns (address);\\n function getAttestationSigner(address) external view returns (address);\\n function getValidatorSigner(address) external view returns (address);\\n function getVoteSigner(address) external view returns (address);\\n function hasAuthorizedVoteSigner(address) external view returns (bool);\\n function hasAuthorizedValidatorSigner(address) external view returns (bool);\\n function hasAuthorizedAttestationSigner(address) external view returns (bool);\\n\\n function setAccountDataEncryptionKey(bytes calldata) external;\\n function setMetadataURL(string calldata) external;\\n function setName(string calldata) external;\\n function setWalletAddress(address, uint8, bytes32, bytes32) external;\\n function setAccount(string calldata, bytes calldata, address, uint8, bytes32, bytes32) external;\\n\\n function getDataEncryptionKey(address) external view returns (bytes memory);\\n function getWalletAddress(address) external view returns (address);\\n function getMetadataURL(address) external view returns (string memory);\\n function batchGetMetadataURL(address[] calldata)\\n external\\n view\\n returns (uint256[] memory, bytes memory);\\n function getName(address) external view returns (string memory);\\n\\n function authorizeVoteSigner(address, uint8, bytes32, bytes32) external;\\n function authorizeValidatorSigner(address, uint8, bytes32, bytes32) external;\\n function authorizeValidatorSignerWithPublicKey(address, uint8, bytes32, bytes32, bytes calldata)\\n external;\\n function authorizeValidatorSignerWithKeys(\\n address,\\n uint8,\\n bytes32,\\n bytes32,\\n bytes calldata,\\n bytes calldata,\\n bytes calldata\\n ) external;\\n function authorizeAttestationSigner(address, uint8, bytes32, bytes32) external;\\n function createAccount() external returns (bool);\\n\\n function setPaymentDelegation(address, uint256) external;\\n function getPaymentDelegation(address) external view returns (address, uint256);\\n function isSigner(address, address, bytes32) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x1ec92ced98458b625f5cc7742e7487c6e9c0042ae86bbd4b5cec293363c543ee\"},\"project:/contracts/common/interfaces/ICeloVersionedContract.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface ICeloVersionedContract {\\n /**\\n * @notice Returns the storage, major, minor, and patch version of the contract.\\n * @return The storage, major, minor, and patch version of the contract.\\n */\\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256);\\n}\\n\",\"keccak256\":\"0x9f902faa66069500c7b5e8c9a53ca6afff99dfe6cd3915aa0f3c4fe6a9905ba5\"},\"project:/contracts/common/interfaces/IFeeCurrencyWhitelist.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IFeeCurrencyWhitelist {\\n function addToken(address) external;\\n function getWhitelist() external view returns (address[] memory);\\n}\\n\",\"keccak256\":\"0xd4711baf3e38a0abeb3ef48eaab21aeb917f5e0a185cf463fddeb4bf20277b68\"},\"project:/contracts/common/interfaces/IFreezer.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IFreezer {\\n function isFrozen(address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x12508a9d528d1b63dc06644e9d97e864acc94f8a763cf8555e90bcdf1b2f8b21\"},\"project:/contracts/common/interfaces/IRegistry.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IRegistry {\\n function setAddressFor(string calldata, address) external;\\n function getAddressForOrDie(bytes32) external view returns (address);\\n function getAddressFor(bytes32) external view returns (address);\\n function getAddressForStringOrDie(string calldata identifier) external view returns (address);\\n function getAddressForString(string calldata identifier) external view returns (address);\\n function isOneOf(bytes32[] calldata, address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x78ba82722d28e815c117f33d4659404f0707dab1c9b51f1bce5d4c15d6c94537\"},\"project:/contracts/common/libraries/ReentrancyGuard.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\n/**\\n * @title Helps contracts guard against reentrancy attacks.\\n * @author Remco Bloemen , Eenae \\n * @dev If you mark a function `nonReentrant`, you should also\\n * mark it `external`.\\n */\\ncontract ReentrancyGuard {\\n /// @dev counter to allow mutex lock with only one SSTORE operation\\n uint256 private _guardCounter;\\n\\n constructor() internal {\\n // The counter starts at one to prevent changing it from zero to a non-zero\\n // value, which is a more expensive operation.\\n _guardCounter = 1;\\n }\\n\\n /**\\n * @dev Prevents a contract from calling itself, directly or indirectly.\\n * Calling a `nonReentrant` function from another `nonReentrant`\\n * function is not supported. It is possible to prevent this from happening\\n * by making the `nonReentrant` function external, and make it call a\\n * `private` function that does the actual work.\\n */\\n modifier nonReentrant() {\\n _guardCounter += 1;\\n uint256 localCounter = _guardCounter;\\n _;\\n require(localCounter == _guardCounter, \\\"reentrant call\\\");\\n }\\n}\\n\",\"keccak256\":\"0xa2584554532d7004ca3d2d168cd9dfb7694605f1a32431af4d1b7d834fa6b08d\"},\"project:/contracts/governance/interfaces/IElection.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IElection {\\n function electValidatorSigners() external view returns (address[] memory);\\n function electNValidatorSigners(uint256, uint256) external view returns (address[] memory);\\n function vote(address, uint256, address, address) external returns (bool);\\n function activate(address) external returns (bool);\\n function revokeActive(address, uint256, address, address, uint256) external returns (bool);\\n function revokeAllActive(address, address, address, uint256) external returns (bool);\\n function revokePending(address, uint256, address, address, uint256) external returns (bool);\\n function markGroupIneligible(address) external;\\n function markGroupEligible(address, address, address) external;\\n function forceDecrementVotes(\\n address,\\n uint256,\\n address[] calldata,\\n address[] calldata,\\n uint256[] calldata\\n ) external returns (uint256);\\n\\n // view functions\\n function getElectableValidators() external view returns (uint256, uint256);\\n function getElectabilityThreshold() external view returns (uint256);\\n function getNumVotesReceivable(address) external view returns (uint256);\\n function getTotalVotes() external view returns (uint256);\\n function getActiveVotes() external view returns (uint256);\\n function getTotalVotesByAccount(address) external view returns (uint256);\\n function getPendingVotesForGroupByAccount(address, address) external view returns (uint256);\\n function getActiveVotesForGroupByAccount(address, address) external view returns (uint256);\\n function getTotalVotesForGroupByAccount(address, address) external view returns (uint256);\\n function getActiveVoteUnitsForGroupByAccount(address, address) external view returns (uint256);\\n function getTotalVotesForGroup(address) external view returns (uint256);\\n function getActiveVotesForGroup(address) external view returns (uint256);\\n function getPendingVotesForGroup(address) external view returns (uint256);\\n function getGroupEligibility(address) external view returns (bool);\\n function getGroupEpochRewards(address, uint256, uint256[] calldata)\\n external\\n view\\n returns (uint256);\\n function getGroupsVotedForByAccount(address) external view returns (address[] memory);\\n function getEligibleValidatorGroups() external view returns (address[] memory);\\n function getTotalVotesForEligibleValidatorGroups()\\n external\\n view\\n returns (address[] memory, uint256[] memory);\\n function getCurrentValidatorSigners() external view returns (address[] memory);\\n function canReceiveVotes(address, uint256) external view returns (bool);\\n function hasActivatablePendingVotes(address, address) external view returns (bool);\\n\\n // only owner\\n function setElectableValidators(uint256, uint256) external returns (bool);\\n function setMaxNumGroupsVotedFor(uint256) external returns (bool);\\n function setElectabilityThreshold(uint256) external returns (bool);\\n\\n // only VM\\n function distributeEpochRewards(address, uint256, address, address) external;\\n}\\n\",\"keccak256\":\"0xebcd0d7dbbb2df503967ad63c9ddd437cef89a94ba2cc2f9ce274f41a4c901ee\"},\"project:/contracts/governance/interfaces/IGovernance.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IGovernance {\\n function isVoting(address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x227bf6a6b56411c368c9752761e2202ad71f2199deb2b114b125712b63372b7e\"},\"project:/contracts/governance/interfaces/ILockedGold.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface ILockedGold {\\n function incrementNonvotingAccountBalance(address, uint256) external;\\n function decrementNonvotingAccountBalance(address, uint256) external;\\n function getAccountTotalLockedGold(address) external view returns (uint256);\\n function getTotalLockedGold() external view returns (uint256);\\n function getPendingWithdrawals(address)\\n external\\n view\\n returns (uint256[] memory, uint256[] memory);\\n function getTotalPendingWithdrawals(address) external view returns (uint256);\\n function lock() external payable;\\n function unlock(uint256) external;\\n function relock(uint256, uint256) external;\\n function withdraw(uint256) external;\\n function slash(\\n address account,\\n uint256 penalty,\\n address reporter,\\n uint256 reward,\\n address[] calldata lessers,\\n address[] calldata greaters,\\n uint256[] calldata indices\\n ) external;\\n function isSlasher(address) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x577d01d8a1fbf47980fb5ffd36de2084ec255889b15671adfecd3a285df4f253\"},\"project:/contracts/governance/interfaces/IValidators.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IValidators {\\n function registerValidator(bytes calldata, bytes calldata, bytes calldata)\\n external\\n returns (bool);\\n function deregisterValidator(uint256) external returns (bool);\\n function affiliate(address) external returns (bool);\\n function deaffiliate() external returns (bool);\\n function updateBlsPublicKey(bytes calldata, bytes calldata) external returns (bool);\\n function registerValidatorGroup(uint256) external returns (bool);\\n function deregisterValidatorGroup(uint256) external returns (bool);\\n function addMember(address) external returns (bool);\\n function addFirstMember(address, address, address) external returns (bool);\\n function removeMember(address) external returns (bool);\\n function reorderMember(address, address, address) external returns (bool);\\n function updateCommission() external;\\n function setNextCommissionUpdate(uint256) external;\\n function resetSlashingMultiplier() external;\\n\\n // only owner\\n function setCommissionUpdateDelay(uint256) external;\\n function setMaxGroupSize(uint256) external returns (bool);\\n function setMembershipHistoryLength(uint256) external returns (bool);\\n function setValidatorScoreParameters(uint256, uint256) external returns (bool);\\n function setGroupLockedGoldRequirements(uint256, uint256) external returns (bool);\\n function setValidatorLockedGoldRequirements(uint256, uint256) external returns (bool);\\n function setSlashingMultiplierResetPeriod(uint256) external;\\n\\n // view functions\\n function getMaxGroupSize() external view returns (uint256);\\n function getCommissionUpdateDelay() external view returns (uint256);\\n function getValidatorScoreParameters() external view returns (uint256, uint256);\\n function getMembershipHistory(address)\\n external\\n view\\n returns (uint256[] memory, address[] memory, uint256, uint256);\\n function calculateEpochScore(uint256) external view returns (uint256);\\n function calculateGroupEpochScore(uint256[] calldata) external view returns (uint256);\\n function getAccountLockedGoldRequirement(address) external view returns (uint256);\\n function meetsAccountLockedGoldRequirements(address) external view returns (bool);\\n function getValidatorBlsPublicKeyFromSigner(address) external view returns (bytes memory);\\n function getValidator(address account)\\n external\\n view\\n returns (bytes memory, bytes memory, address, uint256, address);\\n function getValidatorGroup(address)\\n external\\n view\\n returns (address[] memory, uint256, uint256, uint256, uint256[] memory, uint256, uint256);\\n function getGroupNumMembers(address) external view returns (uint256);\\n function getTopGroupValidators(address, uint256) external view returns (address[] memory);\\n function getGroupsNumMembers(address[] calldata accounts)\\n external\\n view\\n returns (uint256[] memory);\\n function getNumRegisteredValidators() external view returns (uint256);\\n function groupMembershipInEpoch(address, uint256, uint256) external view returns (address);\\n\\n // only registered contract\\n function updateEcdsaPublicKey(address, address, bytes calldata) external returns (bool);\\n function updatePublicKeys(address, address, bytes calldata, bytes calldata, bytes calldata)\\n external\\n returns (bool);\\n function getValidatorLockedGoldRequirements() external view returns (uint256, uint256);\\n function getGroupLockedGoldRequirements() external view returns (uint256, uint256);\\n function getRegisteredValidators() external view returns (address[] memory);\\n function getRegisteredValidatorSigners() external view returns (address[] memory);\\n function getRegisteredValidatorGroups() external view returns (address[] memory);\\n function isValidatorGroup(address) external view returns (bool);\\n function isValidator(address) external view returns (bool);\\n function getValidatorGroupSlashingMultiplier(address) external view returns (uint256);\\n function getMembershipInLastEpoch(address) external view returns (address);\\n function getMembershipInLastEpochFromSigner(address) external view returns (address);\\n\\n // only VM\\n function updateValidatorScoreFromSigner(address, uint256) external;\\n function distributeEpochPaymentsFromSigner(address, uint256) external returns (uint256);\\n\\n // only slasher\\n function forceDeaffiliateIfValidator(address) external;\\n function halveSlashingMultiplier(address) external;\\n\\n}\\n\",\"keccak256\":\"0x524a9e48689537421f97296ffd57fa0f2887117f9af9e71dd5ed17e66ba92d2a\"},\"project:/contracts/identity/OdisPayments.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\nimport \\\"openzeppelin-solidity/contracts/math/SafeMath.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\\\";\\nimport \\\"openzeppelin-solidity/contracts/ownership/Ownable.sol\\\";\\n\\nimport \\\"./interfaces/IOdisPayments.sol\\\";\\nimport \\\"../common/interfaces/ICeloVersionedContract.sol\\\";\\n\\nimport \\\"../common/Initializable.sol\\\";\\nimport \\\"../common/UsingRegistryV2.sol\\\";\\nimport \\\"../common/libraries/ReentrancyGuard.sol\\\";\\n\\n/**\\n * @title Stores balance to be used for ODIS quota calculation.\\n */\\ncontract OdisPayments is\\n IOdisPayments,\\n ICeloVersionedContract,\\n ReentrancyGuard,\\n Ownable,\\n Initializable,\\n UsingRegistryV2\\n{\\n using SafeMath for uint256;\\n using SafeERC20 for IERC20;\\n\\n event PaymentMade(address indexed account, uint256 valueInCUSD);\\n\\n // Store amount sent (all time) from account to this contract.\\n // Values in totalPaidCUSD should only ever be incremented, since ODIS relies\\n // on all-time paid balance to compute every quota.\\n mapping(address => uint256) public totalPaidCUSD;\\n\\n /**\\n * @notice Sets initialized == true on implementation contracts.\\n * @param test Set to true to skip implementation initialization.\\n */\\n constructor(bool test) public Initializable(test) {}\\n\\n /**\\n * @notice Returns the storage, major, minor, and patch version of the contract.\\n * @return Storage version of the contract.\\n * @return Major version of the contract.\\n * @return Minor version of the contract.\\n * @return Patch version of the contract.\\n */\\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) {\\n return (1, 1, 0, 0);\\n }\\n\\n /**\\n * @notice Used in place of the constructor to allow the contract to be upgradable via proxy.\\n */\\n function initialize() external initializer {\\n _transferOwnership(msg.sender);\\n }\\n\\n /**\\n * @notice Sends cUSD to this contract to pay for ODIS quota (for queries).\\n * @param account The account whose balance to increment.\\n * @param value The amount in cUSD to pay.\\n * @dev Throws if cUSD transfer fails.\\n */\\n function payInCUSD(address account, uint256 value) external nonReentrant {\\n IERC20(registryContract.getAddressForOrDie(STABLE_TOKEN_REGISTRY_ID)).safeTransferFrom(\\n msg.sender,\\n address(this),\\n value\\n );\\n totalPaidCUSD[account] = totalPaidCUSD[account].add(value);\\n emit PaymentMade(account, value);\\n }\\n}\\n\",\"keccak256\":\"0x5eb86d337e0d12de347062d4281f3da04e1338eb0b45274ba5072e61bf861470\"},\"project:/contracts/identity/interfaces/IAttestations.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IAttestations {\\n function request(bytes32, uint256, address) external;\\n function selectIssuers(bytes32) external;\\n function complete(bytes32, uint8, bytes32, bytes32) external;\\n function revoke(bytes32, uint256) external;\\n function withdraw(address) external;\\n function approveTransfer(bytes32, uint256, address, address, bool) external;\\n\\n // view functions\\n function getUnselectedRequest(bytes32, address) external view returns (uint32, uint32, address);\\n function getAttestationIssuers(bytes32, address) external view returns (address[] memory);\\n function getAttestationStats(bytes32, address) external view returns (uint32, uint32);\\n function batchGetAttestationStats(bytes32[] calldata)\\n external\\n view\\n returns (uint256[] memory, address[] memory, uint64[] memory, uint64[] memory);\\n function getAttestationState(bytes32, address, address)\\n external\\n view\\n returns (uint8, uint32, address);\\n function getCompletableAttestations(bytes32, address)\\n external\\n view\\n returns (uint32[] memory, address[] memory, uint256[] memory, bytes memory);\\n function getAttestationRequestFee(address) external view returns (uint256);\\n function getMaxAttestations() external view returns (uint256);\\n function validateAttestationCode(bytes32, address, uint8, bytes32, bytes32)\\n external\\n view\\n returns (address);\\n function lookupAccountsForIdentifier(bytes32) external view returns (address[] memory);\\n function requireNAttestationsRequested(bytes32, address, uint32) external view;\\n\\n // only owner\\n function setAttestationRequestFee(address, uint256) external;\\n function setAttestationExpiryBlocks(uint256) external;\\n function setSelectIssuersWaitBlocks(uint256) external;\\n function setMaxAttestations(uint256) external;\\n}\\n\",\"keccak256\":\"0x979aaac636fe6a64f97034bf0bf062b5f0efd6e6f9f3fe84e81180f82eeb7a3e\"},\"project:/contracts/identity/interfaces/IFederatedAttestations.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IFederatedAttestations {\\n function registerAttestationAsIssuer(bytes32 identifier, address account, uint64 issuedOn)\\n external;\\n function registerAttestation(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external;\\n function revokeAttestation(bytes32 identifier, address issuer, address account) external;\\n function batchRevokeAttestations(\\n address issuer,\\n bytes32[] calldata identifiers,\\n address[] calldata accounts\\n ) external;\\n\\n // view functions\\n function lookupAttestations(bytes32 identifier, address[] calldata trustedIssuers)\\n external\\n view\\n returns (\\n uint256[] memory,\\n address[] memory,\\n address[] memory,\\n uint64[] memory,\\n uint64[] memory\\n );\\n function lookupIdentifiers(address account, address[] calldata trustedIssuers)\\n external\\n view\\n returns (uint256[] memory, bytes32[] memory);\\n function validateAttestationSig(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn,\\n uint8 v,\\n bytes32 r,\\n bytes32 s\\n ) external view;\\n function getUniqueAttestationHash(\\n bytes32 identifier,\\n address issuer,\\n address account,\\n address signer,\\n uint64 issuedOn\\n ) external pure returns (bytes32);\\n}\\n\",\"keccak256\":\"0xe6b1bfcc36ca38554c29c03f96e70f937a824462fb620e418f774c3d1340d9a8\"},\"project:/contracts/identity/interfaces/IOdisPayments.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IOdisPayments {\\n function payInCUSD(address account, uint256 value) external;\\n function totalPaidCUSD(address) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x5c5556cd24273aa5a0c4fe7a2d8529080556fcee27ac1c1f192cb42f4d8077dc\"},\"project:/contracts/identity/interfaces/IRandom.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IRandom {\\n function revealAndCommit(bytes32, bytes32, address) external;\\n function randomnessBlockRetentionWindow() external view returns (uint256);\\n function random() external view returns (bytes32);\\n function getBlockRandomness(uint256) external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0xd65fd529d133cbde94628b39b0d2f0f4b6d0af2e8f97c0e6b4b2cd476479ed1d\"},\"project:/contracts/stability/interfaces/IExchange.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IExchange {\\n function buy(uint256, uint256, bool) external returns (uint256);\\n function sell(uint256, uint256, bool) external returns (uint256);\\n function exchange(uint256, uint256, bool) external returns (uint256);\\n function setUpdateFrequency(uint256) external;\\n function getBuyTokenAmount(uint256, bool) external view returns (uint256);\\n function getSellTokenAmount(uint256, bool) external view returns (uint256);\\n function getBuyAndSellBuckets(bool) external view returns (uint256, uint256);\\n}\\n\",\"keccak256\":\"0xf2934d473f1b42566dbd90b4777725c966524bab78ce734b51f2510c6ef83ebb\"},\"project:/contracts/stability/interfaces/IReserve.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface IReserve {\\n function setTobinTaxStalenessThreshold(uint256) external;\\n function addToken(address) external returns (bool);\\n function removeToken(address, uint256) external returns (bool);\\n function transferGold(address payable, uint256) external returns (bool);\\n function transferExchangeGold(address payable, uint256) external returns (bool);\\n function getReserveGoldBalance() external view returns (uint256);\\n function getUnfrozenReserveGoldBalance() external view returns (uint256);\\n function getOrComputeTobinTax() external returns (uint256, uint256);\\n function getTokens() external view returns (address[] memory);\\n function getReserveRatio() external view returns (uint256);\\n function addExchangeSpender(address) external;\\n function removeExchangeSpender(address, uint256) external;\\n function addSpender(address) external;\\n function removeSpender(address) external;\\n}\\n\",\"keccak256\":\"0x8da4d702b47a7e60981ca416f2d0f24a3c1dea9ab44f04b695c0fde02c84a38e\"},\"project:/contracts/stability/interfaces/ISortedOracles.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\ninterface ISortedOracles {\\n function addOracle(address, address) external;\\n function removeOracle(address, address, uint256) external;\\n function report(address, uint256, address, address) external;\\n function removeExpiredReports(address, uint256) external;\\n function isOldestReportExpired(address token) external view returns (bool, address);\\n function numRates(address) external view returns (uint256);\\n function medianRate(address) external view returns (uint256, uint256);\\n function numTimestamps(address) external view returns (uint256);\\n function medianTimestamp(address) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x8f80e430800fff2f04f3981c4b73a2a374b2c2150543a2de51fcf7ba4fb08789\"},\"project:/contracts/stability/interfaces/IStableToken.sol\":{\"content\":\"pragma solidity ^0.5.13;\\n\\n/**\\n * @title This interface describes the functions specific to Celo Stable Tokens, and in the\\n * absence of interface inheritance is intended as a companion to IERC20.sol and ICeloToken.sol.\\n */\\ninterface IStableToken {\\n function mint(address, uint256) external returns (bool);\\n function burn(uint256) external returns (bool);\\n function setInflationParameters(uint256, uint256) external;\\n function valueToUnits(uint256) external view returns (uint256);\\n function unitsToValue(uint256) external view returns (uint256);\\n function getInflationParameters() external view returns (uint256, uint256, uint256, uint256);\\n\\n // NOTE: duplicated with IERC20.sol, remove once interface inheritance is supported.\\n function balanceOf(address) external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x091e577acecdf050fe4c41133b11fe330d07050c5fe78b65bfce32ccc29e51c6\"}},\"version\":1}",
+ "bytecode": "0x608060405234801561001057600080fd5b50604051610f9b380380610f9b8339818101604052602081101561003357600080fd5b8101908080519060200190929190505050806001600081905550600061005d61012360201b60201c565b905080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508061011c5760018060146101000a81548160ff0219169083151502179055505b505061012b565b600033905090565b610e618061013a6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638129fc1c116100665780638129fc1c146101a45780638da5cb5b146101ae5780638f32d59b146101f8578063dcb026471461021a578063f2fde38b146102685761009e565b8063158ef93e146100a357806322dad9dc146100c557806328c1f99b1461011d57806354255be014610167578063715018a61461019a575b600080fd5b6100ab6102ac565b604051808215151515815260200191505060405180910390f35b610107600480360360208110156100db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102bf565b6040518082815260200191505060405180910390f35b6101256102d7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61016f6102dd565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b6101a2610303565b005b6101ac61043e565b005b6101b66104e6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610200610510565b604051808215151515815260200191505060405180910390f35b6102666004803603604081101561023057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061056f565b005b6102aa6004803603602081101561027e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107e4565b005b600160149054906101000a900460ff1681565b60026020528060005260406000206000915090505481565b61ce1081565b600080600080600180600080839350829250819150809050935093509350935090919293565b61030b610510565b61037d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600160149054906101000a900460ff16156104c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b60018060146101000a81548160ff0219169083151502179055506104e43361086a565b565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105536109b0565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6001600080828254019250508190555060008054905061068533308461ce1073ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f537461626c65546f6b656e000000000000000000000000000000000000000000815250600b019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561062457600080fd5b505afa158015610638573d6000803e3d6000fd5b505050506040513d602081101561064e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166109b8909392919063ffffffff16565b6106d782600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610abe90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f3a2d0e41c506b136330c6e5e0295ccbf0966daece99bfe7c89020cc01dbfb8d6836040518082815260200191505060405180910390a260005481146107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b505050565b6107ec610510565b61085e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6108678161086a565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156108f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610ddd6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b610ab8848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610b46565b50505050565b600080828401905083811015610b3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b610b658273ffffffffffffffffffffffffffffffffffffffff16610d91565b610bd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610c265780518252602082019150602081019050602083039250610c03565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610c88576040519150601f19603f3d011682016040523d82523d6000602084013e610c8d565b606091505b509150915081610d05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610d8b57808060200190516020811015610d2457600080fd5b8101908080519060200190929190505050610d8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610e03602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610dd357506000801b8214155b9250505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158201fd1dea869352dbe08be6ca0d18a3717cf75aa06595e634d69ceddba3a5f3a9364736f6c634300050d0032",
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80638129fc1c116100665780638129fc1c146101a45780638da5cb5b146101ae5780638f32d59b146101f8578063dcb026471461021a578063f2fde38b146102685761009e565b8063158ef93e146100a357806322dad9dc146100c557806328c1f99b1461011d57806354255be014610167578063715018a61461019a575b600080fd5b6100ab6102ac565b604051808215151515815260200191505060405180910390f35b610107600480360360208110156100db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102bf565b6040518082815260200191505060405180910390f35b6101256102d7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61016f6102dd565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b6101a2610303565b005b6101ac61043e565b005b6101b66104e6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610200610510565b604051808215151515815260200191505060405180910390f35b6102666004803603604081101561023057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061056f565b005b6102aa6004803603602081101561027e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107e4565b005b600160149054906101000a900460ff1681565b60026020528060005260406000206000915090505481565b61ce1081565b600080600080600180600080839350829250819150809050935093509350935090919293565b61030b610510565b61037d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600160149054906101000a900460ff16156104c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b60018060146101000a81548160ff0219169083151502179055506104e43361086a565b565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105536109b0565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6001600080828254019250508190555060008054905061068533308461ce1073ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f537461626c65546f6b656e000000000000000000000000000000000000000000815250600b019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561062457600080fd5b505afa158015610638573d6000803e3d6000fd5b505050506040513d602081101561064e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166109b8909392919063ffffffff16565b6106d782600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610abe90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f3a2d0e41c506b136330c6e5e0295ccbf0966daece99bfe7c89020cc01dbfb8d6836040518082815260200191505060405180910390a260005481146107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f7265656e7472616e742063616c6c00000000000000000000000000000000000081525060200191505060405180910390fd5b505050565b6107ec610510565b61085e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6108678161086a565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156108f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610ddd6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b610ab8848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050610b46565b50505050565b600080828401905083811015610b3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b610b658273ffffffffffffffffffffffffffffffffffffffff16610d91565b610bd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610c265780518252602082019150602081019050602083039250610c03565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610c88576040519150601f19603f3d011682016040523d82523d6000602084013e610c8d565b606091505b509150915081610d05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115610d8b57808060200190516020811015610d2457600080fd5b8101908080519060200190929190505050610d8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180610e03602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015610dd357506000801b8214155b9250505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158201fd1dea869352dbe08be6ca0d18a3717cf75aa06595e634d69ceddba3a5f3a9364736f6c634300050d0032",
+ "sourceMap": "585:1879:99:-;;;1250:52;8:9:-1;5:2;;;30:1;27;20:12;5:2;1250:52:99;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1250:52:99;;;;;;;;;;;;;;;;1294:4;558:1:38;542:13;:17;;;;698::4;718:12;:10;;;:12;;:::i;:::-;698:32;;749:9;740:6;;:18;;;;;;;;;;;;;;;;;;806:9;773:43;;802:1;773:43;;;;;;;;;;;;664:159;135:17:19;130:57;;176:4;162:11;;:18;;;;;;;;;;;;;;;;;;130:57;81:110;1250:52:99;585:1879;;788:96:0;833:15;867:10;860:17;;788:96;:::o;585:1879:99:-;;;;;;;",
+ "deployedSourceMap": "585:1879:99:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;585:1879:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53:23:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1050:48:99;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1050:48:99;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;995:71:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1579:117:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1684:137:4;;;:::i;:::-;;1808:84:99;;;:::i;:::-;;899:77:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1250:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2132:330:99;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2132:330:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1970:107:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1970:107:4;;;;;;;;;;;;;;;;;;;:::i;:::-;;53:23:19;;;;;;;;;;;;;:::o;1050:48:99:-;;;;;;;;;;;;;;;;;:::o;995:71:27:-;949:42;995:71;:::o;1579:117:99:-;1630:7;1639;1648;1657;1680:1;1683;1686;1689;1672:19;;;;;;;;;;;;;;;;;;;;1579:117;;;;:::o;1684:137:4:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1745:40;;1766:6;;;;;;;;;;;1745:40;;;;;;;;;;;;1812:1;1795:6;;:19;;;;;;;;;;;;;;;;;;1684:137::o;1808:84:99:-;233:11:19;;;;;;;;;;;232:12;224:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;297:4;283:11;;:18;;;;;;;;;;;;;;;;;;1857:30:99;1876:10;1857:18;:30::i;:::-;1808:84::o;899:77:4:-;937:7;963:6;;;;;;;;;;;956:13;;899:77;:::o;1250:92::-;1290:4;1329:6;;;;;;;;;;;1313:22;;:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;2132:330:99:-;970:1:38;953:13;;:18;;;;;;;;;;;977:20;1000:13;;977:36;;2211:144:99;2305:10;2331:4;2344:5;949:42:27;2218:35:99;;;2991:31:27;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2991:31:27;;;2981:42;;;;;;2218:61:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2218:61:99;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2218:61:99;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2218:61:99;;;;;;;;;;;;;;;;2211:86;;;;:144;;;;;;:::i;:::-;2386:33;2413:5;2386:13;:22;2400:7;2386:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;2361:13;:22;2375:7;2361:22;;;;;;;;;;;;;;;:58;;;;2442:7;2430:27;;;2451:5;2430:27;;;;;;;;;;;;;;;;;;1050:13:38;;1034:12;:29;1026:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2132:330:99;;;:::o;1970:107:4:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;2178:225::-;2271:1;2251:22;;:8;:22;;;;2243:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2360:8;2331:38;;2352:6;;;;;;;;;;;2331:38;;;;;;;;;;;;2388:8;2379:6;;:17;;;;;;;;;;;;;;;;;;2178:225;:::o;788:96:0:-;833:15;867:10;860:17;;788:96;:::o;842:202:7:-;942:95;961:5;991;:18;;;:27;;;;1020:4;1026:2;1030:5;968:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;968:68:7;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;968:68:7;942:18;:95::i;:::-;842:202;;;;:::o;834:176:3:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;2666:1095:7:-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3436:25:7;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3394:67:7;;;;3479:7;3471:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:1;3538:10;:17;:21;3534:221;;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:30:7;;;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:221;2666:1095;;;;:::o;686:610:8:-;746:4;1004:16;1030:19;1052:66;1030:88;;;;1219:7;1207:20;1195:32;;1258:11;1246:8;:23;;:42;;;;;1285:3;1273:15;;:8;:15;;1246:42;1238:51;;;;686:610;;;:::o",
+ "source": "pragma solidity ^0.5.13;\n\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\";\nimport \"openzeppelin-solidity/contracts/ownership/Ownable.sol\";\n\nimport \"./interfaces/IOdisPayments.sol\";\nimport \"../common/interfaces/ICeloVersionedContract.sol\";\n\nimport \"../common/Initializable.sol\";\nimport \"../common/UsingRegistryV2.sol\";\nimport \"../common/libraries/ReentrancyGuard.sol\";\n\n/**\n * @title Stores balance to be used for ODIS quota calculation.\n */\ncontract OdisPayments is\n IOdisPayments,\n ICeloVersionedContract,\n ReentrancyGuard,\n Ownable,\n Initializable,\n UsingRegistryV2\n{\n using SafeMath for uint256;\n using SafeERC20 for IERC20;\n\n event PaymentMade(address indexed account, uint256 valueInCUSD);\n\n // Store amount sent (all time) from account to this contract.\n // Values in totalPaidCUSD should only ever be incremented, since ODIS relies\n // on all-time paid balance to compute every quota.\n mapping(address => uint256) public totalPaidCUSD;\n\n /**\n * @notice Sets initialized == true on implementation contracts.\n * @param test Set to true to skip implementation initialization.\n */\n constructor(bool test) public Initializable(test) {}\n\n /**\n * @notice Returns the storage, major, minor, and patch version of the contract.\n * @return Storage version of the contract.\n * @return Major version of the contract.\n * @return Minor version of the contract.\n * @return Patch version of the contract.\n */\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) {\n return (1, 1, 0, 0);\n }\n\n /**\n * @notice Used in place of the constructor to allow the contract to be upgradable via proxy.\n */\n function initialize() external initializer {\n _transferOwnership(msg.sender);\n }\n\n /**\n * @notice Sends cUSD to this contract to pay for ODIS quota (for queries).\n * @param account The account whose balance to increment.\n * @param value The amount in cUSD to pay.\n * @dev Throws if cUSD transfer fails.\n */\n function payInCUSD(address account, uint256 value) external nonReentrant {\n IERC20(registryContract.getAddressForOrDie(STABLE_TOKEN_REGISTRY_ID)).safeTransferFrom(\n msg.sender,\n address(this),\n value\n );\n totalPaidCUSD[account] = totalPaidCUSD[account].add(value);\n emit PaymentMade(account, value);\n }\n}\n",
+ "sourcePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/identity/OdisPayments.sol",
+ "ast": {
+ "absolutePath": "project:/contracts/identity/OdisPayments.sol",
+ "exportedSymbols": {
+ "OdisPayments": [
+ 35290
+ ]
+ },
+ "id": 35291,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 35173,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".13"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:99"
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "id": 35174,
+ "nodeType": "ImportDirective",
+ "scope": 35291,
+ "sourceUnit": 364,
+ "src": "26:59:99",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
+ "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
+ "id": 35175,
+ "nodeType": "ImportDirective",
+ "scope": 35291,
+ "sourceUnit": 956,
+ "src": "86:64:99",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol",
+ "file": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol",
+ "id": 35176,
+ "nodeType": "ImportDirective",
+ "scope": 35291,
+ "sourceUnit": 1176,
+ "src": "151:67:99",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "id": 35177,
+ "nodeType": "ImportDirective",
+ "scope": 35291,
+ "sourceUnit": 482,
+ "src": "219:63:99",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "project:/contracts/identity/interfaces/IOdisPayments.sol",
+ "file": "./interfaces/IOdisPayments.sol",
+ "id": 35178,
+ "nodeType": "ImportDirective",
+ "scope": 35291,
+ "sourceUnit": 36171,
+ "src": "284:40:99",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "project:/contracts/common/interfaces/ICeloVersionedContract.sol",
+ "file": "../common/interfaces/ICeloVersionedContract.sol",
+ "id": 35179,
+ "nodeType": "ImportDirective",
+ "scope": 35291,
+ "sourceUnit": 9108,
+ "src": "325:57:99",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "project:/contracts/common/Initializable.sol",
+ "file": "../common/Initializable.sol",
+ "id": 35180,
+ "nodeType": "ImportDirective",
+ "scope": 35291,
+ "sourceUnit": 5885,
+ "src": "384:37:99",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "project:/contracts/common/UsingRegistryV2.sol",
+ "file": "../common/UsingRegistryV2.sol",
+ "id": 35181,
+ "nodeType": "ImportDirective",
+ "scope": 35291,
+ "sourceUnit": 8802,
+ "src": "422:39:99",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "project:/contracts/common/libraries/ReentrancyGuard.sol",
+ "file": "../common/libraries/ReentrancyGuard.sol",
+ "id": 35182,
+ "nodeType": "ImportDirective",
+ "scope": 35291,
+ "sourceUnit": 9486,
+ "src": "462:49:99",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "baseContracts": [
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 35183,
+ "name": "IOdisPayments",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 36170,
+ "src": "612:13:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IOdisPayments_$36170",
+ "typeString": "contract IOdisPayments"
+ }
+ },
+ "id": 35184,
+ "nodeType": "InheritanceSpecifier",
+ "src": "612:13:99"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 35185,
+ "name": "ICeloVersionedContract",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 9107,
+ "src": "629:22:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_ICeloVersionedContract_$9107",
+ "typeString": "contract ICeloVersionedContract"
+ }
+ },
+ "id": 35186,
+ "nodeType": "InheritanceSpecifier",
+ "src": "629:22:99"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 35187,
+ "name": "ReentrancyGuard",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 9485,
+ "src": "655:15:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_ReentrancyGuard_$9485",
+ "typeString": "contract ReentrancyGuard"
+ }
+ },
+ "id": 35188,
+ "nodeType": "InheritanceSpecifier",
+ "src": "655:15:99"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 35189,
+ "name": "Ownable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 481,
+ "src": "674:7:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Ownable_$481",
+ "typeString": "contract Ownable"
+ }
+ },
+ "id": 35190,
+ "nodeType": "InheritanceSpecifier",
+ "src": "674:7:99"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 35191,
+ "name": "Initializable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 5884,
+ "src": "685:13:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Initializable_$5884",
+ "typeString": "contract Initializable"
+ }
+ },
+ "id": 35192,
+ "nodeType": "InheritanceSpecifier",
+ "src": "685:13:99"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 35193,
+ "name": "UsingRegistryV2",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 8801,
+ "src": "702:15:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_UsingRegistryV2_$8801",
+ "typeString": "contract UsingRegistryV2"
+ }
+ },
+ "id": 35194,
+ "nodeType": "InheritanceSpecifier",
+ "src": "702:15:99"
+ }
+ ],
+ "contractDependencies": [
+ 26,
+ 481,
+ 5884,
+ 8801,
+ 9107,
+ 9485,
+ 36170
+ ],
+ "contractKind": "contract",
+ "documentation": "@title Stores balance to be used for ODIS quota calculation.",
+ "fullyImplemented": true,
+ "id": 35290,
+ "linearizedBaseContracts": [
+ 35290,
+ 8801,
+ 5884,
+ 481,
+ 26,
+ 9485,
+ 9107,
+ 36170
+ ],
+ "name": "OdisPayments",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "id": 35197,
+ "libraryName": {
+ "contractScope": null,
+ "id": 35195,
+ "name": "SafeMath",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 363,
+ "src": "728:8:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_SafeMath_$363",
+ "typeString": "library SafeMath"
+ }
+ },
+ "nodeType": "UsingForDirective",
+ "src": "722:27:99",
+ "typeName": {
+ "id": 35196,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "741:7:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ },
+ {
+ "id": 35200,
+ "libraryName": {
+ "contractScope": null,
+ "id": 35198,
+ "name": "SafeERC20",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 1175,
+ "src": "758:9:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_SafeERC20_$1175",
+ "typeString": "library SafeERC20"
+ }
+ },
+ "nodeType": "UsingForDirective",
+ "src": "752:27:99",
+ "typeName": {
+ "contractScope": null,
+ "id": 35199,
+ "name": "IERC20",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 955,
+ "src": "772:6:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IERC20_$955",
+ "typeString": "contract IERC20"
+ }
+ }
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 35206,
+ "name": "PaymentMade",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 35205,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 35202,
+ "indexed": true,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 35206,
+ "src": "801:23:99",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 35201,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "801:7:99",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 35204,
+ "indexed": false,
+ "name": "valueInCUSD",
+ "nodeType": "VariableDeclaration",
+ "scope": 35206,
+ "src": "826:19:99",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 35203,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "826:7:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "800:46:99"
+ },
+ "src": "783:64:99"
+ },
+ {
+ "constant": false,
+ "id": 35210,
+ "name": "totalPaidCUSD",
+ "nodeType": "VariableDeclaration",
+ "scope": 35290,
+ "src": "1050:48:99",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ },
+ "typeName": {
+ "id": 35209,
+ "keyType": {
+ "id": 35207,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1058:7:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1050:27:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ },
+ "valueType": {
+ "id": 35208,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1069:7:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 35218,
+ "nodeType": "Block",
+ "src": "1300:2:99",
+ "statements": []
+ },
+ "documentation": "@notice Sets initialized == true on implementation contracts.\n@param test Set to true to skip implementation initialization.",
+ "id": 35219,
+ "implemented": true,
+ "kind": "constructor",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 35215,
+ "name": "test",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 35212,
+ "src": "1294:4:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 35216,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 35214,
+ "name": "Initializable",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 5884,
+ "src": "1280:13:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Initializable_$5884_$",
+ "typeString": "type(contract Initializable)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "1280:19:99"
+ }
+ ],
+ "name": "",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 35213,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 35212,
+ "name": "test",
+ "nodeType": "VariableDeclaration",
+ "scope": 35219,
+ "src": "1262:9:99",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 35211,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "1262:4:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1261:11:99"
+ },
+ "returnParameters": {
+ "id": 35217,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1300:0:99"
+ },
+ "scope": 35290,
+ "src": "1250:52:99",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 35236,
+ "nodeType": "Block",
+ "src": "1666:30:99",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 35230,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1680:1:99",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 35231,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1683:1:99",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 35232,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1686:1:99",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 35233,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1689:1:99",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "id": 35234,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "1679:12:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_rational_1_by_1_$_t_rational_1_by_1_$_t_rational_0_by_1_$_t_rational_0_by_1_$",
+ "typeString": "tuple(int_const 1,int_const 1,int_const 0,int_const 0)"
+ }
+ },
+ "functionReturnParameters": 35229,
+ "id": 35235,
+ "nodeType": "Return",
+ "src": "1672:19:99"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the storage, major, minor, and patch version of the contract.\n@return Storage version of the contract.\n@return Major version of the contract.\n@return Minor version of the contract.\n@return Patch version of the contract.",
+ "id": 35237,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getVersionNumber",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 35220,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1604:2:99"
+ },
+ "returnParameters": {
+ "id": 35229,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 35222,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 35237,
+ "src": "1630:7:99",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 35221,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1630:7:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 35224,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 35237,
+ "src": "1639:7:99",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 35223,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1639:7:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 35226,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 35237,
+ "src": "1648:7:99",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 35225,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1648:7:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 35228,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 35237,
+ "src": "1657:7:99",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 35227,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1657:7:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1629:36:99"
+ },
+ "scope": 35290,
+ "src": "1579:117:99",
+ "stateMutability": "pure",
+ "superFunction": 9106,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 35247,
+ "nodeType": "Block",
+ "src": "1851:41:99",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 35243,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "1876:3:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 35244,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1876:10:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 35242,
+ "name": "_transferOwnership",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 480,
+ "src": "1857:18:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 35245,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1857:30:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 35246,
+ "nodeType": "ExpressionStatement",
+ "src": "1857:30:99"
+ }
+ ]
+ },
+ "documentation": "@notice Used in place of the constructor to allow the contract to be upgradable via proxy.",
+ "id": 35248,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 35240,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 35239,
+ "name": "initializer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 5883,
+ "src": "1839:11:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "1839:11:99"
+ }
+ ],
+ "name": "initialize",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 35238,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1827:2:99"
+ },
+ "returnParameters": {
+ "id": 35241,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1851:0:99"
+ },
+ "scope": 35290,
+ "src": "1808:84:99",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 35288,
+ "nodeType": "Block",
+ "src": "2205:257:99",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 35264,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 42906,
+ "src": "2305:3:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 35265,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2305:10:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 35267,
+ "name": "this",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43138,
+ "src": "2331:4:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_OdisPayments_$35290",
+ "typeString": "contract OdisPayments"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_contract$_OdisPayments_$35290",
+ "typeString": "contract OdisPayments"
+ }
+ ],
+ "id": 35266,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2323:7:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 35268,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2323:13:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 35269,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 35252,
+ "src": "2344:5:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 35260,
+ "name": "STABLE_TOKEN_REGISTRY_ID",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8477,
+ "src": "2254:24:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 35258,
+ "name": "registryContract",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8325,
+ "src": "2218:16:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IRegistry_$9281",
+ "typeString": "contract IRegistry"
+ }
+ },
+ "id": 35259,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getAddressForOrDie",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 9249,
+ "src": "2218:35:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (bytes32) view external returns (address)"
+ }
+ },
+ "id": 35261,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2218:61:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 35257,
+ "name": "IERC20",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 955,
+ "src": "2211:6:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_IERC20_$955_$",
+ "typeString": "type(contract IERC20)"
+ }
+ },
+ "id": 35262,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2211:69:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IERC20_$955",
+ "typeString": "contract IERC20"
+ }
+ },
+ "id": 35263,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "safeTransferFrom",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 1013,
+ "src": "2211:86:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$955_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$955_$",
+ "typeString": "function (contract IERC20,address,address,uint256)"
+ }
+ },
+ "id": 35270,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2211:144:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 35271,
+ "nodeType": "ExpressionStatement",
+ "src": "2211:144:99"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 35281,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 35272,
+ "name": "totalPaidCUSD",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 35210,
+ "src": "2361:13:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 35274,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 35273,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 35250,
+ "src": "2375:7:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "2361:22:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 35279,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 35252,
+ "src": "2413:5:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 35275,
+ "name": "totalPaidCUSD",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 35210,
+ "src": "2386:13:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 35277,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 35276,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 35250,
+ "src": "2400:7:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2386:22:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 35278,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 203,
+ "src": "2386:26:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 35280,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2386:33:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2361:58:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 35282,
+ "nodeType": "ExpressionStatement",
+ "src": "2361:58:99"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 35284,
+ "name": "account",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 35250,
+ "src": "2442:7:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 35285,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 35252,
+ "src": "2451:5:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 35283,
+ "name": "PaymentMade",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 35206,
+ "src": "2430:11:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,uint256)"
+ }
+ },
+ "id": 35286,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2430:27:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 35287,
+ "nodeType": "EmitStatement",
+ "src": "2425:32:99"
+ }
+ ]
+ },
+ "documentation": "@notice Sends cUSD to this contract to pay for ODIS quota (for queries).\n@param account The account whose balance to increment.\n@param value The amount in cUSD to pay.\n@dev Throws if cUSD transfer fails.",
+ "id": 35289,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 35255,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 35254,
+ "name": "nonReentrant",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 9484,
+ "src": "2192:12:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "2192:12:99"
+ }
+ ],
+ "name": "payInCUSD",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 35253,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 35250,
+ "name": "account",
+ "nodeType": "VariableDeclaration",
+ "scope": 35289,
+ "src": "2151:15:99",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 35249,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2151:7:99",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 35252,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 35289,
+ "src": "2168:13:99",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 35251,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2168:7:99",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2150:32:99"
+ },
+ "returnParameters": {
+ "id": 35256,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "2205:0:99"
+ },
+ "scope": 35290,
+ "src": "2132:330:99",
+ "stateMutability": "nonpayable",
+ "superFunction": 36162,
+ "visibility": "external"
+ }
+ ],
+ "scope": 35291,
+ "src": "585:1879:99"
+ }
+ ],
+ "src": "0:2465:99"
+ },
+ "legacyAST": {
+ "attributes": {
+ "absolutePath": "project:/contracts/identity/OdisPayments.sol",
+ "exportedSymbols": {
+ "OdisPayments": [
+ 35290
+ ]
+ }
+ },
+ "children": [
+ {
+ "attributes": {
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".13"
+ ]
+ },
+ "id": 35173,
+ "name": "PragmaDirective",
+ "src": "0:24:99"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 364,
+ "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "scope": 35291,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 35174,
+ "name": "ImportDirective",
+ "src": "26:59:99"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 956,
+ "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
+ "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
+ "scope": 35291,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 35175,
+ "name": "ImportDirective",
+ "src": "86:64:99"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 1176,
+ "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol",
+ "file": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol",
+ "scope": 35291,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 35176,
+ "name": "ImportDirective",
+ "src": "151:67:99"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 482,
+ "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "scope": 35291,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 35177,
+ "name": "ImportDirective",
+ "src": "219:63:99"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 36171,
+ "absolutePath": "project:/contracts/identity/interfaces/IOdisPayments.sol",
+ "file": "./interfaces/IOdisPayments.sol",
+ "scope": 35291,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 35178,
+ "name": "ImportDirective",
+ "src": "284:40:99"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 9108,
+ "absolutePath": "project:/contracts/common/interfaces/ICeloVersionedContract.sol",
+ "file": "../common/interfaces/ICeloVersionedContract.sol",
+ "scope": 35291,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 35179,
+ "name": "ImportDirective",
+ "src": "325:57:99"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 5885,
+ "absolutePath": "project:/contracts/common/Initializable.sol",
+ "file": "../common/Initializable.sol",
+ "scope": 35291,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 35180,
+ "name": "ImportDirective",
+ "src": "384:37:99"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 8802,
+ "absolutePath": "project:/contracts/common/UsingRegistryV2.sol",
+ "file": "../common/UsingRegistryV2.sol",
+ "scope": 35291,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 35181,
+ "name": "ImportDirective",
+ "src": "422:39:99"
+ },
+ {
+ "attributes": {
+ "SourceUnit": 9486,
+ "absolutePath": "project:/contracts/common/libraries/ReentrancyGuard.sol",
+ "file": "../common/libraries/ReentrancyGuard.sol",
+ "scope": 35291,
+ "symbolAliases": [
+ null
+ ],
+ "unitAlias": ""
+ },
+ "id": 35182,
+ "name": "ImportDirective",
+ "src": "462:49:99"
+ },
+ {
+ "attributes": {
+ "contractDependencies": [
+ 26,
+ 481,
+ 5884,
+ 8801,
+ 9107,
+ 9485,
+ 36170
+ ],
+ "contractKind": "contract",
+ "documentation": "@title Stores balance to be used for ODIS quota calculation.",
+ "fullyImplemented": true,
+ "linearizedBaseContracts": [
+ 35290,
+ 8801,
+ 5884,
+ 481,
+ 26,
+ 9485,
+ 9107,
+ 36170
+ ],
+ "name": "OdisPayments",
+ "scope": 35291
+ },
+ "children": [
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "IOdisPayments",
+ "referencedDeclaration": 36170,
+ "type": "contract IOdisPayments"
+ },
+ "id": 35183,
+ "name": "UserDefinedTypeName",
+ "src": "612:13:99"
+ }
+ ],
+ "id": 35184,
+ "name": "InheritanceSpecifier",
+ "src": "612:13:99"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "ICeloVersionedContract",
+ "referencedDeclaration": 9107,
+ "type": "contract ICeloVersionedContract"
+ },
+ "id": 35185,
+ "name": "UserDefinedTypeName",
+ "src": "629:22:99"
+ }
+ ],
+ "id": 35186,
+ "name": "InheritanceSpecifier",
+ "src": "629:22:99"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "ReentrancyGuard",
+ "referencedDeclaration": 9485,
+ "type": "contract ReentrancyGuard"
+ },
+ "id": 35187,
+ "name": "UserDefinedTypeName",
+ "src": "655:15:99"
+ }
+ ],
+ "id": 35188,
+ "name": "InheritanceSpecifier",
+ "src": "655:15:99"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "Ownable",
+ "referencedDeclaration": 481,
+ "type": "contract Ownable"
+ },
+ "id": 35189,
+ "name": "UserDefinedTypeName",
+ "src": "674:7:99"
+ }
+ ],
+ "id": 35190,
+ "name": "InheritanceSpecifier",
+ "src": "674:7:99"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "Initializable",
+ "referencedDeclaration": 5884,
+ "type": "contract Initializable"
+ },
+ "id": 35191,
+ "name": "UserDefinedTypeName",
+ "src": "685:13:99"
+ }
+ ],
+ "id": 35192,
+ "name": "InheritanceSpecifier",
+ "src": "685:13:99"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "UsingRegistryV2",
+ "referencedDeclaration": 8801,
+ "type": "contract UsingRegistryV2"
+ },
+ "id": 35193,
+ "name": "UserDefinedTypeName",
+ "src": "702:15:99"
+ }
+ ],
+ "id": 35194,
+ "name": "InheritanceSpecifier",
+ "src": "702:15:99"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "SafeMath",
+ "referencedDeclaration": 363,
+ "type": "library SafeMath"
+ },
+ "id": 35195,
+ "name": "UserDefinedTypeName",
+ "src": "728:8:99"
+ },
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 35196,
+ "name": "ElementaryTypeName",
+ "src": "741:7:99"
+ }
+ ],
+ "id": 35197,
+ "name": "UsingForDirective",
+ "src": "722:27:99"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "SafeERC20",
+ "referencedDeclaration": 1175,
+ "type": "library SafeERC20"
+ },
+ "id": 35198,
+ "name": "UserDefinedTypeName",
+ "src": "758:9:99"
+ },
+ {
+ "attributes": {
+ "contractScope": null,
+ "name": "IERC20",
+ "referencedDeclaration": 955,
+ "type": "contract IERC20"
+ },
+ "id": 35199,
+ "name": "UserDefinedTypeName",
+ "src": "772:6:99"
+ }
+ ],
+ "id": 35200,
+ "name": "UsingForDirective",
+ "src": "752:27:99"
+ },
+ {
+ "attributes": {
+ "anonymous": false,
+ "documentation": null,
+ "name": "PaymentMade"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": true,
+ "name": "account",
+ "scope": 35206,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 35201,
+ "name": "ElementaryTypeName",
+ "src": "801:7:99"
+ }
+ ],
+ "id": 35202,
+ "name": "VariableDeclaration",
+ "src": "801:23:99"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "indexed": false,
+ "name": "valueInCUSD",
+ "scope": 35206,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 35203,
+ "name": "ElementaryTypeName",
+ "src": "826:7:99"
+ }
+ ],
+ "id": 35204,
+ "name": "VariableDeclaration",
+ "src": "826:19:99"
+ }
+ ],
+ "id": 35205,
+ "name": "ParameterList",
+ "src": "800:46:99"
+ }
+ ],
+ "id": 35206,
+ "name": "EventDefinition",
+ "src": "783:64:99"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "totalPaidCUSD",
+ "scope": 35290,
+ "stateVariable": true,
+ "storageLocation": "default",
+ "type": "mapping(address => uint256)",
+ "value": null,
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "attributes": {
+ "type": "mapping(address => uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "type": "address"
+ },
+ "id": 35207,
+ "name": "ElementaryTypeName",
+ "src": "1058:7:99"
+ },
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 35208,
+ "name": "ElementaryTypeName",
+ "src": "1069:7:99"
+ }
+ ],
+ "id": 35209,
+ "name": "Mapping",
+ "src": "1050:27:99"
+ }
+ ],
+ "id": 35210,
+ "name": "VariableDeclaration",
+ "src": "1050:48:99"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Sets initialized == true on implementation contracts.\n@param test Set to true to skip implementation initialization.",
+ "implemented": true,
+ "isConstructor": true,
+ "kind": "constructor",
+ "name": "",
+ "scope": 35290,
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "test",
+ "scope": 35219,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "bool",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "bool",
+ "type": "bool"
+ },
+ "id": 35211,
+ "name": "ElementaryTypeName",
+ "src": "1262:4:99"
+ }
+ ],
+ "id": 35212,
+ "name": "VariableDeclaration",
+ "src": "1262:9:99"
+ }
+ ],
+ "id": 35213,
+ "name": "ParameterList",
+ "src": "1261:11:99"
+ },
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 35217,
+ "name": "ParameterList",
+ "src": "1300:0:99"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 5884,
+ "type": "type(contract Initializable)",
+ "value": "Initializable"
+ },
+ "id": 35214,
+ "name": "Identifier",
+ "src": "1280:13:99"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 35212,
+ "type": "bool",
+ "value": "test"
+ },
+ "id": 35215,
+ "name": "Identifier",
+ "src": "1294:4:99"
+ }
+ ],
+ "id": 35216,
+ "name": "ModifierInvocation",
+ "src": "1280:19:99"
+ },
+ {
+ "attributes": {
+ "statements": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 35218,
+ "name": "Block",
+ "src": "1300:2:99"
+ }
+ ],
+ "id": 35219,
+ "name": "FunctionDefinition",
+ "src": "1250:52:99"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Returns the storage, major, minor, and patch version of the contract.\n@return Storage version of the contract.\n@return Major version of the contract.\n@return Minor version of the contract.\n@return Patch version of the contract.",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "modifiers": [
+ null
+ ],
+ "name": "getVersionNumber",
+ "scope": 35290,
+ "stateMutability": "pure",
+ "superFunction": 9106,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 35220,
+ "name": "ParameterList",
+ "src": "1604:2:99"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 35237,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 35221,
+ "name": "ElementaryTypeName",
+ "src": "1630:7:99"
+ }
+ ],
+ "id": 35222,
+ "name": "VariableDeclaration",
+ "src": "1630:7:99"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 35237,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 35223,
+ "name": "ElementaryTypeName",
+ "src": "1639:7:99"
+ }
+ ],
+ "id": 35224,
+ "name": "VariableDeclaration",
+ "src": "1639:7:99"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 35237,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 35225,
+ "name": "ElementaryTypeName",
+ "src": "1648:7:99"
+ }
+ ],
+ "id": 35226,
+ "name": "VariableDeclaration",
+ "src": "1648:7:99"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "",
+ "scope": 35237,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 35227,
+ "name": "ElementaryTypeName",
+ "src": "1657:7:99"
+ }
+ ],
+ "id": 35228,
+ "name": "VariableDeclaration",
+ "src": "1657:7:99"
+ }
+ ],
+ "id": 35229,
+ "name": "ParameterList",
+ "src": "1629:36:99"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "functionReturnParameters": 35229
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "type": "tuple(int_const 1,int_const 1,int_const 0,int_const 0)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 35230,
+ "name": "Literal",
+ "src": "1680:1:99"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "31",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 1",
+ "value": "1"
+ },
+ "id": 35231,
+ "name": "Literal",
+ "src": "1683:1:99"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 35232,
+ "name": "Literal",
+ "src": "1686:1:99"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "hexvalue": "30",
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "subdenomination": null,
+ "token": "number",
+ "type": "int_const 0",
+ "value": "0"
+ },
+ "id": 35233,
+ "name": "Literal",
+ "src": "1689:1:99"
+ }
+ ],
+ "id": 35234,
+ "name": "TupleExpression",
+ "src": "1679:12:99"
+ }
+ ],
+ "id": 35235,
+ "name": "Return",
+ "src": "1672:19:99"
+ }
+ ],
+ "id": 35236,
+ "name": "Block",
+ "src": "1666:30:99"
+ }
+ ],
+ "id": 35237,
+ "name": "FunctionDefinition",
+ "src": "1579:117:99"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Used in place of the constructor to allow the contract to be upgradable via proxy.",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "name": "initialize",
+ "scope": 35290,
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 35238,
+ "name": "ParameterList",
+ "src": "1827:2:99"
+ },
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 35241,
+ "name": "ParameterList",
+ "src": "1851:0:99"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 5883,
+ "type": "modifier ()",
+ "value": "initializer"
+ },
+ "id": 35239,
+ "name": "Identifier",
+ "src": "1839:11:99"
+ }
+ ],
+ "id": 35240,
+ "name": "ModifierInvocation",
+ "src": "1839:11:99"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 480,
+ "type": "function (address)",
+ "value": "_transferOwnership"
+ },
+ "id": 35242,
+ "name": "Identifier",
+ "src": "1857:18:99"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 35243,
+ "name": "Identifier",
+ "src": "1876:3:99"
+ }
+ ],
+ "id": 35244,
+ "name": "MemberAccess",
+ "src": "1876:10:99"
+ }
+ ],
+ "id": 35245,
+ "name": "FunctionCall",
+ "src": "1857:30:99"
+ }
+ ],
+ "id": 35246,
+ "name": "ExpressionStatement",
+ "src": "1857:30:99"
+ }
+ ],
+ "id": 35247,
+ "name": "Block",
+ "src": "1851:41:99"
+ }
+ ],
+ "id": 35248,
+ "name": "FunctionDefinition",
+ "src": "1808:84:99"
+ },
+ {
+ "attributes": {
+ "documentation": "@notice Sends cUSD to this contract to pay for ODIS quota (for queries).\n@param account The account whose balance to increment.\n@param value The amount in cUSD to pay.\n@dev Throws if cUSD transfer fails.",
+ "implemented": true,
+ "isConstructor": false,
+ "kind": "function",
+ "name": "payInCUSD",
+ "scope": 35290,
+ "stateMutability": "nonpayable",
+ "superFunction": 36162,
+ "visibility": "external"
+ },
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "constant": false,
+ "name": "account",
+ "scope": 35289,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "address",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "address",
+ "stateMutability": "nonpayable",
+ "type": "address"
+ },
+ "id": 35249,
+ "name": "ElementaryTypeName",
+ "src": "2151:7:99"
+ }
+ ],
+ "id": 35250,
+ "name": "VariableDeclaration",
+ "src": "2151:15:99"
+ },
+ {
+ "attributes": {
+ "constant": false,
+ "name": "value",
+ "scope": 35289,
+ "stateVariable": false,
+ "storageLocation": "default",
+ "type": "uint256",
+ "value": null,
+ "visibility": "internal"
+ },
+ "children": [
+ {
+ "attributes": {
+ "name": "uint256",
+ "type": "uint256"
+ },
+ "id": 35251,
+ "name": "ElementaryTypeName",
+ "src": "2168:7:99"
+ }
+ ],
+ "id": 35252,
+ "name": "VariableDeclaration",
+ "src": "2168:13:99"
+ }
+ ],
+ "id": 35253,
+ "name": "ParameterList",
+ "src": "2150:32:99"
+ },
+ {
+ "attributes": {
+ "parameters": [
+ null
+ ]
+ },
+ "children": [],
+ "id": 35256,
+ "name": "ParameterList",
+ "src": "2205:0:99"
+ },
+ {
+ "attributes": {
+ "arguments": null
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 9484,
+ "type": "modifier ()",
+ "value": "nonReentrant"
+ },
+ "id": 35254,
+ "name": "Identifier",
+ "src": "2192:12:99"
+ }
+ ],
+ "id": 35255,
+ "name": "ModifierInvocation",
+ "src": "2192:12:99"
+ },
+ {
+ "children": [
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "safeTransferFrom",
+ "referencedDeclaration": 1013,
+ "type": "function (contract IERC20,address,address,uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "contract IERC20",
+ "type_conversion": true
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 955,
+ "type": "type(contract IERC20)",
+ "value": "IERC20"
+ },
+ "id": 35257,
+ "name": "Identifier",
+ "src": "2211:6:99"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "address",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "getAddressForOrDie",
+ "referencedDeclaration": 9249,
+ "type": "function (bytes32) view external returns (address)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 8325,
+ "type": "contract IRegistry",
+ "value": "registryContract"
+ },
+ "id": 35258,
+ "name": "Identifier",
+ "src": "2218:16:99"
+ }
+ ],
+ "id": 35259,
+ "name": "MemberAccess",
+ "src": "2218:35:99"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 8477,
+ "type": "bytes32",
+ "value": "STABLE_TOKEN_REGISTRY_ID"
+ },
+ "id": 35260,
+ "name": "Identifier",
+ "src": "2254:24:99"
+ }
+ ],
+ "id": 35261,
+ "name": "FunctionCall",
+ "src": "2218:61:99"
+ }
+ ],
+ "id": 35262,
+ "name": "FunctionCall",
+ "src": "2211:69:99"
+ }
+ ],
+ "id": 35263,
+ "name": "MemberAccess",
+ "src": "2211:86:99"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "sender",
+ "referencedDeclaration": null,
+ "type": "address payable"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 42906,
+ "type": "msg",
+ "value": "msg"
+ },
+ "id": 35264,
+ "name": "Identifier",
+ "src": "2305:3:99"
+ }
+ ],
+ "id": 35265,
+ "name": "MemberAccess",
+ "src": "2305:10:99"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "address",
+ "type_conversion": true
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_contract$_OdisPayments_$35290",
+ "typeString": "contract OdisPayments"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "type": "type(address)",
+ "value": "address"
+ },
+ "id": 35266,
+ "name": "ElementaryTypeNameExpression",
+ "src": "2323:7:99"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 43138,
+ "type": "contract OdisPayments",
+ "value": "this"
+ },
+ "id": 35267,
+ "name": "Identifier",
+ "src": "2331:4:99"
+ }
+ ],
+ "id": 35268,
+ "name": "FunctionCall",
+ "src": "2323:13:99"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 35252,
+ "type": "uint256",
+ "value": "value"
+ },
+ "id": 35269,
+ "name": "Identifier",
+ "src": "2344:5:99"
+ }
+ ],
+ "id": 35270,
+ "name": "FunctionCall",
+ "src": "2211:144:99"
+ }
+ ],
+ "id": 35271,
+ "name": "ExpressionStatement",
+ "src": "2211:144:99"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "operator": "=",
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 35210,
+ "type": "mapping(address => uint256)",
+ "value": "totalPaidCUSD"
+ },
+ "id": 35272,
+ "name": "Identifier",
+ "src": "2361:13:99"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 35250,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 35273,
+ "name": "Identifier",
+ "src": "2375:7:99"
+ }
+ ],
+ "id": 35274,
+ "name": "IndexAccess",
+ "src": "2361:22:99"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "uint256",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "member_name": "add",
+ "referencedDeclaration": 203,
+ "type": "function (uint256,uint256) pure returns (uint256)"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "type": "uint256"
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 35210,
+ "type": "mapping(address => uint256)",
+ "value": "totalPaidCUSD"
+ },
+ "id": 35275,
+ "name": "Identifier",
+ "src": "2386:13:99"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 35250,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 35276,
+ "name": "Identifier",
+ "src": "2400:7:99"
+ }
+ ],
+ "id": 35277,
+ "name": "IndexAccess",
+ "src": "2386:22:99"
+ }
+ ],
+ "id": 35278,
+ "name": "MemberAccess",
+ "src": "2386:26:99"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 35252,
+ "type": "uint256",
+ "value": "value"
+ },
+ "id": 35279,
+ "name": "Identifier",
+ "src": "2413:5:99"
+ }
+ ],
+ "id": 35280,
+ "name": "FunctionCall",
+ "src": "2386:33:99"
+ }
+ ],
+ "id": 35281,
+ "name": "Assignment",
+ "src": "2361:58:99"
+ }
+ ],
+ "id": 35282,
+ "name": "ExpressionStatement",
+ "src": "2361:58:99"
+ },
+ {
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "isStructConstructorCall": false,
+ "lValueRequested": false,
+ "names": [
+ null
+ ],
+ "type": "tuple()",
+ "type_conversion": false
+ },
+ "children": [
+ {
+ "attributes": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 35206,
+ "type": "function (address,uint256)",
+ "value": "PaymentMade"
+ },
+ "id": 35283,
+ "name": "Identifier",
+ "src": "2430:11:99"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 35250,
+ "type": "address",
+ "value": "account"
+ },
+ "id": 35284,
+ "name": "Identifier",
+ "src": "2442:7:99"
+ },
+ {
+ "attributes": {
+ "argumentTypes": null,
+ "overloadedDeclarations": [
+ null
+ ],
+ "referencedDeclaration": 35252,
+ "type": "uint256",
+ "value": "value"
+ },
+ "id": 35285,
+ "name": "Identifier",
+ "src": "2451:5:99"
+ }
+ ],
+ "id": 35286,
+ "name": "FunctionCall",
+ "src": "2430:27:99"
+ }
+ ],
+ "id": 35287,
+ "name": "EmitStatement",
+ "src": "2425:32:99"
+ }
+ ],
+ "id": 35288,
+ "name": "Block",
+ "src": "2205:257:99"
+ }
+ ],
+ "id": 35289,
+ "name": "FunctionDefinition",
+ "src": "2132:330:99"
+ }
+ ],
+ "id": 35290,
+ "name": "ContractDefinition",
+ "src": "585:1879:99"
+ }
+ ],
+ "id": 35291,
+ "name": "SourceUnit",
+ "src": "0:2465:99"
+ },
+ "compiler": {
+ "name": "solc",
+ "version": "0.5.13+commit.5b0b510c.Emscripten.clang"
+ },
+ "networks": {},
+ "schemaVersion": "3.4.7",
+ "updatedAt": "2022-09-23T16:17:10.946Z",
+ "devdoc": {
+ "methods": {
+ "constructor": {
+ "params": {
+ "test": "Set to true to skip implementation initialization."
+ }
+ },
+ "getVersionNumber()": {
+ "return": "Storage version of the contract.Major version of the contract.Minor version of the contract.Patch version of the contract."
+ },
+ "isOwner()": {
+ "details": "Returns true if the caller is the current owner."
+ },
+ "owner()": {
+ "details": "Returns the address of the current owner."
+ },
+ "payInCUSD(address,uint256)": {
+ "details": "Throws if cUSD transfer fails.",
+ "params": {
+ "account": "The account whose balance to increment.",
+ "value": "The amount in cUSD to pay."
+ }
+ },
+ "renounceOwnership()": {
+ "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
+ },
+ "transferOwnership(address)": {
+ "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
+ }
+ },
+ "title": "Stores balance to be used for ODIS quota calculation."
+ },
+ "userdoc": {
+ "methods": {
+ "constructor": "Sets initialized == true on implementation contracts.",
+ "getVersionNumber()": {
+ "notice": "Returns the storage, major, minor, and patch version of the contract."
+ },
+ "initialize()": {
+ "notice": "Used in place of the constructor to allow the contract to be upgradable via proxy."
+ },
+ "payInCUSD(address,uint256)": {
+ "notice": "Sends cUSD to this contract to pay for ODIS quota (for queries)."
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/devtip/packages/react-app/abis/Registry.json b/devtip/packages/react-app/abis/Registry.json
new file mode 100644
index 00000000..ef519f86
--- /dev/null
+++ b/devtip/packages/react-app/abis/Registry.json
@@ -0,0 +1,5639 @@
+{
+ "contractName": "Registry",
+ "abi": [
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "test",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousOwner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "OwnershipTransferred",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "identifier",
+ "type": "string"
+ },
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "identifierHash",
+ "type": "bytes32"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "addr",
+ "type": "address"
+ }
+ ],
+ "name": "RegistryUpdated",
+ "type": "event"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "initialized",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isOwner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "owner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "name": "registry",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "renounceOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "transferOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "initialize",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "identifier",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "addr",
+ "type": "address"
+ }
+ ],
+ "name": "setAddressFor",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "identifierHash",
+ "type": "bytes32"
+ }
+ ],
+ "name": "getAddressForOrDie",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "identifierHash",
+ "type": "bytes32"
+ }
+ ],
+ "name": "getAddressFor",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "identifier",
+ "type": "string"
+ }
+ ],
+ "name": "getAddressForStringOrDie",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "identifier",
+ "type": "string"
+ }
+ ],
+ "name": "getAddressForString",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "bytes32[]",
+ "name": "identifierHashes",
+ "type": "bytes32[]"
+ },
+ {
+ "internalType": "address",
+ "name": "sender",
+ "type": "address"
+ }
+ ],
+ "name": "isOneOf",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ }
+ ],
+ "metadata": "{\"compiler\":{\"version\":\"0.5.13+commit.5b0b510c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"test\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"identifier\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifierHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"RegistryUpdated\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifierHash\",\"type\":\"bytes32\"}],\"name\":\"getAddressFor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifierHash\",\"type\":\"bytes32\"}],\"name\":\"getAddressForOrDie\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"string\",\"name\":\"identifier\",\"type\":\"string\"}],\"name\":\"getAddressForString\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"string\",\"name\":\"identifier\",\"type\":\"string\"}],\"name\":\"getAddressForStringOrDie\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"identifierHashes\",\"type\":\"bytes32[]\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"isOneOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"identifier\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setAddressFor\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"constructor\":{\"params\":{\"test\":\"Set to true to skip implementation initialization\"}},\"getAddressFor(bytes32)\":{\"params\":{\"identifierHash\":\"Identifier hash of contract whose address we want to look up.\"}},\"getAddressForOrDie(bytes32)\":{\"details\":\"Throws if address not set.\",\"params\":{\"identifierHash\":\"Identifier hash of contract whose address we want to look up.\"}},\"getAddressForString(string)\":{\"params\":{\"identifier\":\"Identifier of contract whose address we want to look up.\"}},\"getAddressForStringOrDie(string)\":{\"details\":\"Throws if address not set.\",\"params\":{\"identifier\":\"Identifier of contract whose address we want to look up.\"}},\"isOneOf(bytes32[],address)\":{\"params\":{\"identifierHashes\":\"Array of hashes of approved identifiers.\",\"sender\":\"Address in question to verify membership.\"},\"return\":\"True if `sender` corresponds to the address of any of `identifiers` registry entries.\"},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setAddressFor(string,address)\":{\"params\":{\"addr\":\"Address of contract.\",\"identifier\":\"Identifier of contract whose address we want to set.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"Routes identifiers to addresses.\"},\"userdoc\":{\"methods\":{\"constructor\":\"Sets initialized == true on implementation contracts\",\"getAddressFor(bytes32)\":{\"notice\":\"Gets address associated with the given identifierHash.\"},\"getAddressForOrDie(bytes32)\":{\"notice\":\"Gets address associated with the given identifierHash.\"},\"getAddressForString(string)\":{\"notice\":\"Gets address associated with the given identifier.\"},\"getAddressForStringOrDie(string)\":{\"notice\":\"Gets address associated with the given identifier.\"},\"initialize()\":{\"notice\":\"Used in place of the constructor to allow the contract to be upgradable via proxy.\"},\"isOneOf(bytes32[],address)\":{\"notice\":\"Iterates over provided array of identifiers, getting the address for each. Returns true if `sender` matches the address of one of the provided identifiers.\"},\"setAddressFor(string,address)\":{\"notice\":\"Associates the given address with the given identifier.\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/Registry.sol\":\"Registry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/Initializable.sol\":{\"keccak256\":\"0xad98825b5d3181f4ce2d2dbe84adeb0cd7960fd80fafb0813539d6d96ba42ab8\",\"urls\":[\"bzz-raw://f76468328c78b80eeaaaadb7b186e41da4a34134446fe11bb707106322b8e32f\",\"dweb:/ipfs/QmNyjyVjPX1GKFibDcJBJyZQ57nhusG3DhPjAGnY7iaU39\"]},\"/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/Registry.sol\":{\"keccak256\":\"0xdf3e6d50c84727ff1272bd9f74463c09a34fe8137e4be575638b81ae5056e0ff\",\"urls\":[\"bzz-raw://19ba90466092f7321caef948c5907a4e2a6cc812349665baf5f3a7c559c4713c\",\"dweb:/ipfs/QmR7uMVYc6zXJbiw4pjiD6T33KHkDxn83Cb36ymCGJnG57\"]},\"/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/interfaces/IRegistry.sol\":{\"keccak256\":\"0x78ba82722d28e815c117f33d4659404f0707dab1c9b51f1bce5d4c15d6c94537\",\"urls\":[\"bzz-raw://0cea84b948896aece11c64b97c22b0f08f86cb45e166a004db4a88a98952cbfa\",\"dweb:/ipfs/QmR4uSGcs4nmph6duroscchstSwMzWSV8CDvD2SSnWuHbs\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\",\"urls\":[\"bzz-raw://cf4c00fc3c37cc5acf0c82ec6fd97bab67d72c2567fdc0ebf023d9c09b30a08e\",\"dweb:/ipfs/Qmb7TChG6DsEDX7LooJ4vmxot19f7VXX8S1zUGPeJTWbwZ\"]}},\"version\":1}",
+ "bytecode": "0x608060405234801561001057600080fd5b5060405161119e38038061119e8339818101604052602081101561003357600080fd5b810190808051906020019092919050505080600061005561011b60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080610114576001600060146101000a81548160ff0219169083151502179055505b5050610123565b600033905090565b61106c806101326000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638932cbf41161008c578063c586579311610066578063c586579314610407578063dcf0aaed146104a0578063dd9272331461050e578063f2fde38b1461057c576100cf565b80638932cbf4146102e25780638da5cb5b1461039b5780638f32d59b146103e5576100cf565b8063158ef93e146100d457806317c50818146100f6578063715018a6146101a75780637ef50298146101b15780638129fc1c1461021f578063853db32314610229575b600080fd5b6100dc6105c0565b604051808215151515815260200191505060405180910390f35b61018d6004803603604081101561010c57600080fd5b810190808035906020019064010000000081111561012957600080fd5b82018360208201111561013b57600080fd5b8035906020019184602083028401116401000000008311171561015d57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105d3565b604051808215151515815260200191505060405180910390f35b6101af610691565b005b6101dd600480360360208110156101c757600080fd5b81019080803590602001909291905050506107ca565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102276107fd565b005b6102a06004803603602081101561023f57600080fd5b810190808035906020019064010000000081111561025c57600080fd5b82018360208201111561026e57600080fd5b8035906020019184600183028401116401000000008311171561029057600080fd5b90919293919293905050506108a6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610359600480360360208110156102f857600080fd5b810190808035906020019064010000000081111561031557600080fd5b82018360208201111561032757600080fd5b8035906020019184600183028401116401000000008311171561034957600080fd5b9091929391929390505050610918565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103a3610a60565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103ed610a89565b604051808215151515815260200191505060405180910390f35b61049e6004803603604081101561041d57600080fd5b810190808035906020019064010000000081111561043a57600080fd5b82018360208201111561044c57600080fd5b8035906020019184600183028401116401000000008311171561046e57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ae7565b005b6104cc600480360360208110156104b657600080fd5b8101908080359060200190929190505050610c68565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61053a6004803603602081101561052457600080fd5b8101908080359060200190929190505050610d7a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105be6004803603602081101561059257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610db7565b005b600060149054906101000a900460ff1681565b600080600090505b84849050811015610684578273ffffffffffffffffffffffffffffffffffffffff166001600087878581811061060d57fe5b90506020020135815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561066957600191505061068a565b61067d600182610e3d90919063ffffffff16565b90506105db565b50600090505b9392505050565b610699610a89565b61070b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060149054906101000a900460ff1615610880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b6001600060146101000a81548160ff0219169083151502179055506108a433610ec5565b565b60008083836040516020018083838082843780830192505050925050506040516020818303038152906040528051906020012090506001600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505092915050565b6000808383604051602001808383808284378083019250505092505050604051602081830303815290604052805190602001209050600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6964656e74696669657220686173206e6f20726567697374727920656e74727981525060200191505060405180910390fd5b6001600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610acb611009565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b610aef610a89565b610b61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008383604051602001808383808284378083019250505092505050604051602081830303815290604052805190602001209050816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16817f4166d073a7a5e704ce0db7113320f88da2457f872d46dc020c805c562c1582a0868660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a350505050565b60008073ffffffffffffffffffffffffffffffffffffffff166001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d3f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6964656e74696669657220686173206e6f20726567697374727920656e74727981525060200191505060405180910390fd5b6001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610dbf610a89565b610e31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610e3a81610ec5565b50565b600080828401905083811015610ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f4b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806110126026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60003390509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820170654eabf1fff3345175ebb9f2bfb674de24044e2984fee447f08ce2771da9e64736f6c634300050d0032",
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638932cbf41161008c578063c586579311610066578063c586579314610407578063dcf0aaed146104a0578063dd9272331461050e578063f2fde38b1461057c576100cf565b80638932cbf4146102e25780638da5cb5b1461039b5780638f32d59b146103e5576100cf565b8063158ef93e146100d457806317c50818146100f6578063715018a6146101a75780637ef50298146101b15780638129fc1c1461021f578063853db32314610229575b600080fd5b6100dc6105c0565b604051808215151515815260200191505060405180910390f35b61018d6004803603604081101561010c57600080fd5b810190808035906020019064010000000081111561012957600080fd5b82018360208201111561013b57600080fd5b8035906020019184602083028401116401000000008311171561015d57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105d3565b604051808215151515815260200191505060405180910390f35b6101af610691565b005b6101dd600480360360208110156101c757600080fd5b81019080803590602001909291905050506107ca565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102276107fd565b005b6102a06004803603602081101561023f57600080fd5b810190808035906020019064010000000081111561025c57600080fd5b82018360208201111561026e57600080fd5b8035906020019184600183028401116401000000008311171561029057600080fd5b90919293919293905050506108a6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610359600480360360208110156102f857600080fd5b810190808035906020019064010000000081111561031557600080fd5b82018360208201111561032757600080fd5b8035906020019184600183028401116401000000008311171561034957600080fd5b9091929391929390505050610918565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103a3610a60565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103ed610a89565b604051808215151515815260200191505060405180910390f35b61049e6004803603604081101561041d57600080fd5b810190808035906020019064010000000081111561043a57600080fd5b82018360208201111561044c57600080fd5b8035906020019184600183028401116401000000008311171561046e57600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ae7565b005b6104cc600480360360208110156104b657600080fd5b8101908080359060200190929190505050610c68565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61053a6004803603602081101561052457600080fd5b8101908080359060200190929190505050610d7a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105be6004803603602081101561059257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610db7565b005b600060149054906101000a900460ff1681565b600080600090505b84849050811015610684578273ffffffffffffffffffffffffffffffffffffffff166001600087878581811061060d57fe5b90506020020135815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561066957600191505061068a565b61067d600182610e3d90919063ffffffff16565b90506105db565b50600090505b9392505050565b610699610a89565b61070b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060149054906101000a900460ff1615610880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b6001600060146101000a81548160ff0219169083151502179055506108a433610ec5565b565b60008083836040516020018083838082843780830192505050925050506040516020818303038152906040528051906020012090506001600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505092915050565b6000808383604051602001808383808284378083019250505092505050604051602081830303815290604052805190602001209050600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6964656e74696669657220686173206e6f20726567697374727920656e74727981525060200191505060405180910390fd5b6001600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610acb611009565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b610aef610a89565b610b61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008383604051602001808383808284378083019250505092505050604051602081830303815290604052805190602001209050816001600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16817f4166d073a7a5e704ce0db7113320f88da2457f872d46dc020c805c562c1582a0868660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a350505050565b60008073ffffffffffffffffffffffffffffffffffffffff166001600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d3f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6964656e74696669657220686173206e6f20726567697374727920656e74727981525060200191505060405180910390fd5b6001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610dbf610a89565b610e31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610e3a81610ec5565b50565b600080828401905083811015610ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f4b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806110126026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60003390509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820170654eabf1fff3345175ebb9f2bfb674de24044e2984fee447f08ce2771da9e64736f6c634300050d0032",
+ "sourceMap": "270:3393:19:-;;;652:52;8:9:-1;5:2;;;30:1;27;20:12;5:2;652:52:19;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;652:52:19;;;;;;;;;;;;;;;;696:4;698:17:156;718:12;:10;;;:12;;:::i;:::-;698:32;;749:9;740:6;;:18;;;;;;;;;;;;;;;;;;806:9;773:43;;802:1;773:43;;;;;;;;;;;;664:159;135:17:12;130:57;;176:4;162:11;;:18;;;;;;;;;;;;;;;;;;130:57;81:110;652:52:19;270:3393;;788:96:152;833:15;867:10;860:17;;788:96;:::o;270:3393:19:-;;;;;;;",
+ "deployedSourceMap": "270:3393:19:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;270:3393:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53:23:12;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3368:293:19;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3368:293:19;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;3368:293:19;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3368:293:19;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;3368:293:19;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1684:137:156;;;:::i;:::-;;360:43:19;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;360:43:19;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;816:84;;;:::i;:::-;;2726:201;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2726:201:19;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2726:201:19;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2726:201:19;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2726:201:19;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2271:295;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2271:295:19;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2271:295:19;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2271:295:19;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2271:295:19;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;899:77:156;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1250:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1099:256:19;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1099:256:19;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1099:256:19;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1099:256:19;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1099:256:19;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1565:215;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1565:215:19;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1953:121;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1953:121:19;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1970:107:156;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1970:107:156;;;;;;;;;;;;;;;;;;;:::i;:::-;;53:23:12;;;;;;;;;;;;;:::o;3368:293:19:-;3473:4;3492:9;3504:1;3492:13;;3487:152;3511:16;;:23;;3507:1;:27;3487:152;;;3595:6;3562:39;;:8;:29;3571:16;;3588:1;3571:19;;;;;;;;;;;;;3562:29;;;;;;;;;;;;;;;;;;;;;:39;;;3558:75;;;3620:4;3613:11;;;;;3558:75;3540:8;3546:1;3540;:5;;:8;;;;:::i;:::-;3536:12;;3487:152;;;;3651:5;3644:12;;3368:293;;;;;;:::o;1684:137:156:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1745:40;;1766:6;;;;;;;;;;;1745:40;;;;;;;;;;;;1812:1;1795:6;;:19;;;;;;;;;;;;;;;;;;1684:137::o;360:43:19:-;;;;;;;;;;;;;;;;;;;;;;:::o;816:84::-;233:11:12;;;;;;;;;;;232:12;224:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;297:4;283:11;;:18;;;;;;;;;;;;;;;;;;865:30:19;884:10;865:18;:30::i;:::-;816:84::o;2726:201::-;2806:7;2821:22;2873:10;;2856:28;;;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;2856:28:19;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2856:28:19;;;2846:39;;;;;;2821:64;;2898:8;:24;2907:14;2898:24;;;;;;;;;;;;;;;;;;;;;2891:31;;;2726:201;;;;:::o;2271:295::-;2356:7;2371:22;2423:10;;2406:28;;;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;2406:28:19;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2406:28:19;;;2396:39;;;;;;2371:64;;2485:1;2449:38;;:8;:24;2458:14;2449:24;;;;;;;;;;;;;;;;;;;;;:38;;;;2441:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2537:8;:24;2546:14;2537:24;;;;;;;;;;;;;;;;;;;;;2530:31;;;2271:295;;;;:::o;899:77:156:-;937:7;963:6;;;;;;;;;;;956:13;;899:77;:::o;1250:92::-;1290:4;1329:6;;;;;;;;;;;1313:22;;:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;1099:256:19:-;1103:9:156;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1189:22:19;1241:10;;1224:28;;;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;1224:28:19;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1224:28:19;;;1214:39;;;;;;1189:64;;1286:4;1259:8;:24;1268:14;1259:24;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;1345:4;1301:49;;1329:14;1301:49;1317:10;;1301:49;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1301:49:19;;;;;;;;;;;;;;1159:1:156;1099:256:19;;;:::o;1565:215::-;1640:7;1699:1;1663:38;;:8;:24;1672:14;1663:24;;;;;;;;;;;;;;;;;;;;;:38;;;;1655:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1751:8;:24;1760:14;1751:24;;;;;;;;;;;;;;;;;;;;;1744:31;;1565:215;;;:::o;1953:121::-;2023:7;2045:8;:24;2054:14;2045:24;;;;;;;;;;;;;;;;;;;;;2038:31;;1953:121;;;:::o;1970:107:156:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;834:176:155:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;2178:225:156:-;2271:1;2251:22;;:8;:22;;;;2243:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2360:8;2331:38;;2352:6;;;;;;;;;;;2331:38;;;;;;;;;;;;2388:8;2379:6;;:17;;;;;;;;;;;;;;;;;;2178:225;:::o;788:96:152:-;833:15;867:10;860:17;;788:96;:::o",
+ "source": "pragma solidity ^0.5.13;\n\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/ownership/Ownable.sol\";\n\nimport \"./interfaces/IRegistry.sol\";\nimport \"./Initializable.sol\";\n\n/**\n * @title Routes identifiers to addresses.\n */\ncontract Registry is IRegistry, Ownable, Initializable {\n using SafeMath for uint256;\n\n mapping(bytes32 => address) public registry;\n\n event RegistryUpdated(string identifier, bytes32 indexed identifierHash, address indexed addr);\n\n /**\n * @notice Sets initialized == true on implementation contracts\n * @param test Set to true to skip implementation initialization\n */\n constructor(bool test) public Initializable(test) {}\n\n /**\n * @notice Used in place of the constructor to allow the contract to be upgradable via proxy.\n */\n function initialize() external initializer {\n _transferOwnership(msg.sender);\n }\n\n /**\n * @notice Associates the given address with the given identifier.\n * @param identifier Identifier of contract whose address we want to set.\n * @param addr Address of contract.\n */\n function setAddressFor(string calldata identifier, address addr) external onlyOwner {\n bytes32 identifierHash = keccak256(abi.encodePacked(identifier));\n registry[identifierHash] = addr;\n emit RegistryUpdated(identifier, identifierHash, addr);\n }\n\n /**\n * @notice Gets address associated with the given identifierHash.\n * @param identifierHash Identifier hash of contract whose address we want to look up.\n * @dev Throws if address not set.\n */\n function getAddressForOrDie(bytes32 identifierHash) external view returns (address) {\n require(registry[identifierHash] != address(0), \"identifier has no registry entry\");\n return registry[identifierHash];\n }\n\n /**\n * @notice Gets address associated with the given identifierHash.\n * @param identifierHash Identifier hash of contract whose address we want to look up.\n */\n function getAddressFor(bytes32 identifierHash) external view returns (address) {\n return registry[identifierHash];\n }\n\n /**\n * @notice Gets address associated with the given identifier.\n * @param identifier Identifier of contract whose address we want to look up.\n * @dev Throws if address not set.\n */\n function getAddressForStringOrDie(string calldata identifier) external view returns (address) {\n bytes32 identifierHash = keccak256(abi.encodePacked(identifier));\n require(registry[identifierHash] != address(0), \"identifier has no registry entry\");\n return registry[identifierHash];\n }\n\n /**\n * @notice Gets address associated with the given identifier.\n * @param identifier Identifier of contract whose address we want to look up.\n */\n function getAddressForString(string calldata identifier) external view returns (address) {\n bytes32 identifierHash = keccak256(abi.encodePacked(identifier));\n return registry[identifierHash];\n }\n\n /**\n * @notice Iterates over provided array of identifiers, getting the address for each.\n * Returns true if `sender` matches the address of one of the provided identifiers.\n * @param identifierHashes Array of hashes of approved identifiers.\n * @param sender Address in question to verify membership.\n * @return True if `sender` corresponds to the address of any of `identifiers`\n * registry entries.\n */\n function isOneOf(bytes32[] calldata identifierHashes, address sender)\n external\n view\n returns (bool)\n {\n for (uint256 i = 0; i < identifierHashes.length; i = i.add(1)) {\n if (registry[identifierHashes[i]] == sender) {\n return true;\n }\n }\n return false;\n }\n}\n",
+ "sourcePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/Registry.sol",
+ "ast": {
+ "absolutePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/Registry.sol",
+ "exportedSymbols": {
+ "Registry": [
+ 7094
+ ]
+ },
+ "id": 7095,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 6888,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".13"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:19"
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "id": 6889,
+ "nodeType": "ImportDirective",
+ "scope": 7095,
+ "sourceUnit": 44332,
+ "src": "26:59:19",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "id": 6890,
+ "nodeType": "ImportDirective",
+ "scope": 7095,
+ "sourceUnit": 44450,
+ "src": "86:63:19",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/interfaces/IRegistry.sol",
+ "file": "./interfaces/IRegistry.sol",
+ "id": 6891,
+ "nodeType": "ImportDirective",
+ "scope": 7095,
+ "sourceUnit": 9558,
+ "src": "151:36:19",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/Initializable.sol",
+ "file": "./Initializable.sol",
+ "id": 6892,
+ "nodeType": "ImportDirective",
+ "scope": 7095,
+ "sourceUnit": 4705,
+ "src": "188:29:19",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "baseContracts": [
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 6893,
+ "name": "IRegistry",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 9557,
+ "src": "291:9:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IRegistry_$9557",
+ "typeString": "contract IRegistry"
+ }
+ },
+ "id": 6894,
+ "nodeType": "InheritanceSpecifier",
+ "src": "291:9:19"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 6895,
+ "name": "Ownable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 44449,
+ "src": "302:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Ownable_$44449",
+ "typeString": "contract Ownable"
+ }
+ },
+ "id": 6896,
+ "nodeType": "InheritanceSpecifier",
+ "src": "302:7:19"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 6897,
+ "name": "Initializable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 4704,
+ "src": "311:13:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Initializable_$4704",
+ "typeString": "contract Initializable"
+ }
+ },
+ "id": 6898,
+ "nodeType": "InheritanceSpecifier",
+ "src": "311:13:19"
+ }
+ ],
+ "contractDependencies": [
+ 4704,
+ 9557,
+ 43994,
+ 44449
+ ],
+ "contractKind": "contract",
+ "documentation": "@title Routes identifiers to addresses.",
+ "fullyImplemented": true,
+ "id": 7094,
+ "linearizedBaseContracts": [
+ 7094,
+ 4704,
+ 44449,
+ 43994,
+ 9557
+ ],
+ "name": "Registry",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "id": 6901,
+ "libraryName": {
+ "contractScope": null,
+ "id": 6899,
+ "name": "SafeMath",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 44331,
+ "src": "335:8:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_SafeMath_$44331",
+ "typeString": "library SafeMath"
+ }
+ },
+ "nodeType": "UsingForDirective",
+ "src": "329:27:19",
+ "typeName": {
+ "id": 6900,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "348:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ },
+ {
+ "constant": false,
+ "id": 6905,
+ "name": "registry",
+ "nodeType": "VariableDeclaration",
+ "scope": 7094,
+ "src": "360:43:19",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ },
+ "typeName": {
+ "id": 6904,
+ "keyType": {
+ "id": 6902,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "368:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "360:27:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ },
+ "valueType": {
+ "id": 6903,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "379:7:19",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 6913,
+ "name": "RegistryUpdated",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 6912,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 6907,
+ "indexed": false,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 6913,
+ "src": "430:17:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 6906,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "430:6:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 6909,
+ "indexed": true,
+ "name": "identifierHash",
+ "nodeType": "VariableDeclaration",
+ "scope": 6913,
+ "src": "449:30:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 6908,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "449:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 6911,
+ "indexed": true,
+ "name": "addr",
+ "nodeType": "VariableDeclaration",
+ "scope": 6913,
+ "src": "481:20:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 6910,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "481:7:19",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "429:73:19"
+ },
+ "src": "408:95:19"
+ },
+ {
+ "body": {
+ "id": 6921,
+ "nodeType": "Block",
+ "src": "702:2:19",
+ "statements": []
+ },
+ "documentation": "@notice Sets initialized == true on implementation contracts\n@param test Set to true to skip implementation initialization",
+ "id": 6922,
+ "implemented": true,
+ "kind": "constructor",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 6918,
+ "name": "test",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6915,
+ "src": "696:4:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 6919,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 6917,
+ "name": "Initializable",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 4704,
+ "src": "682:13:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Initializable_$4704_$",
+ "typeString": "type(contract Initializable)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "682:19:19"
+ }
+ ],
+ "name": "",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 6916,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 6915,
+ "name": "test",
+ "nodeType": "VariableDeclaration",
+ "scope": 6922,
+ "src": "664:9:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 6914,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "664:4:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "663:11:19"
+ },
+ "returnParameters": {
+ "id": 6920,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "702:0:19"
+ },
+ "scope": 7094,
+ "src": "652:52:19",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 6932,
+ "nodeType": "Block",
+ "src": "859:41:19",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 6928,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45587,
+ "src": "884:3:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 6929,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "884:10:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 6927,
+ "name": "_transferOwnership",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44448,
+ "src": "865:18:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 6930,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "865:30:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 6931,
+ "nodeType": "ExpressionStatement",
+ "src": "865:30:19"
+ }
+ ]
+ },
+ "documentation": "@notice Used in place of the constructor to allow the contract to be upgradable via proxy.",
+ "id": 6933,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 6925,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 6924,
+ "name": "initializer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 4703,
+ "src": "847:11:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "847:11:19"
+ }
+ ],
+ "name": "initialize",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 6923,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "835:2:19"
+ },
+ "returnParameters": {
+ "id": 6926,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "859:0:19"
+ },
+ "scope": 7094,
+ "src": "816:84:19",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 6963,
+ "nodeType": "Block",
+ "src": "1183:172:19",
+ "statements": [
+ {
+ "assignments": [
+ 6943
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 6943,
+ "name": "identifierHash",
+ "nodeType": "VariableDeclaration",
+ "scope": 6963,
+ "src": "1189:22:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 6942,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1189:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 6950,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 6947,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6935,
+ "src": "1241:10:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 6945,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45574,
+ "src": "1224:3:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 6946,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encodePacked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1224:16:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 6948,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1224:28:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 6944,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45581,
+ "src": "1214:9:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 6949,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1214:39:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1189:64:19"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 6955,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 6951,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6905,
+ "src": "1259:8:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 6953,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 6952,
+ "name": "identifierHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6943,
+ "src": "1268:14:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "1259:24:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 6954,
+ "name": "addr",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6937,
+ "src": "1286:4:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "1259:31:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 6956,
+ "nodeType": "ExpressionStatement",
+ "src": "1259:31:19"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 6958,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6935,
+ "src": "1317:10:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 6959,
+ "name": "identifierHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6943,
+ "src": "1329:14:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 6960,
+ "name": "addr",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6937,
+ "src": "1345:4:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 6957,
+ "name": "RegistryUpdated",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6913,
+ "src": "1301:15:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$_t_address_$returns$__$",
+ "typeString": "function (string memory,bytes32,address)"
+ }
+ },
+ "id": 6961,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1301:49:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 6962,
+ "nodeType": "EmitStatement",
+ "src": "1296:54:19"
+ }
+ ]
+ },
+ "documentation": "@notice Associates the given address with the given identifier.\n@param identifier Identifier of contract whose address we want to set.\n@param addr Address of contract.",
+ "id": 6964,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 6940,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 6939,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44382,
+ "src": "1173:9:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "1173:9:19"
+ }
+ ],
+ "name": "setAddressFor",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 6938,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 6935,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 6964,
+ "src": "1122:26:19",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 6934,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "1122:6:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 6937,
+ "name": "addr",
+ "nodeType": "VariableDeclaration",
+ "scope": 6964,
+ "src": "1150:12:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 6936,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1150:7:19",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1121:42:19"
+ },
+ "returnParameters": {
+ "id": 6941,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1183:0:19"
+ },
+ "scope": 7094,
+ "src": "1099:256:19",
+ "stateMutability": "nonpayable",
+ "superFunction": 9518,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 6986,
+ "nodeType": "Block",
+ "src": "1649:131:19",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 6978,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 6972,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6905,
+ "src": "1663:8:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 6974,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 6973,
+ "name": "identifierHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6966,
+ "src": "1672:14:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "1663:24:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 6976,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1699:1:19",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 6975,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1691:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 6977,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1691:10:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "1663:38:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "6964656e74696669657220686173206e6f20726567697374727920656e747279",
+ "id": 6979,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1703:34:19",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_d15abe625df242946c50488116c5d1fa2b82385652a4b98f58b14fa8299917e7",
+ "typeString": "literal_string \"identifier has no registry entry\""
+ },
+ "value": "identifier has no registry entry"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_d15abe625df242946c50488116c5d1fa2b82385652a4b98f58b14fa8299917e7",
+ "typeString": "literal_string \"identifier has no registry entry\""
+ }
+ ],
+ "id": 6971,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45590,
+ 45591
+ ],
+ "referencedDeclaration": 45591,
+ "src": "1655:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 6980,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1655:83:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 6981,
+ "nodeType": "ExpressionStatement",
+ "src": "1655:83:19"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 6982,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6905,
+ "src": "1751:8:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 6984,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 6983,
+ "name": "identifierHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6966,
+ "src": "1760:14:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "1751:24:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 6970,
+ "id": 6985,
+ "nodeType": "Return",
+ "src": "1744:31:19"
+ }
+ ]
+ },
+ "documentation": "@notice Gets address associated with the given identifierHash.\n@param identifierHash Identifier hash of contract whose address we want to look up.\n@dev Throws if address not set.",
+ "id": 6987,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getAddressForOrDie",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 6967,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 6966,
+ "name": "identifierHash",
+ "nodeType": "VariableDeclaration",
+ "scope": 6987,
+ "src": "1593:22:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 6965,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1593:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1592:24:19"
+ },
+ "returnParameters": {
+ "id": 6970,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 6969,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 6987,
+ "src": "1640:7:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 6968,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1640:7:19",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1639:9:19"
+ },
+ "scope": 7094,
+ "src": "1565:215:19",
+ "stateMutability": "view",
+ "superFunction": 9525,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 6998,
+ "nodeType": "Block",
+ "src": "2032:42:19",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 6994,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6905,
+ "src": "2045:8:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 6996,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 6995,
+ "name": "identifierHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6989,
+ "src": "2054:14:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2045:24:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 6993,
+ "id": 6997,
+ "nodeType": "Return",
+ "src": "2038:31:19"
+ }
+ ]
+ },
+ "documentation": "@notice Gets address associated with the given identifierHash.\n@param identifierHash Identifier hash of contract whose address we want to look up.",
+ "id": 6999,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getAddressFor",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 6990,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 6989,
+ "name": "identifierHash",
+ "nodeType": "VariableDeclaration",
+ "scope": 6999,
+ "src": "1976:22:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 6988,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1976:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1975:24:19"
+ },
+ "returnParameters": {
+ "id": 6993,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 6992,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 6999,
+ "src": "2023:7:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 6991,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2023:7:19",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2022:9:19"
+ },
+ "scope": 7094,
+ "src": "1953:121:19",
+ "stateMutability": "view",
+ "superFunction": 9532,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 7030,
+ "nodeType": "Block",
+ "src": "2365:201:19",
+ "statements": [
+ {
+ "assignments": [
+ 7007
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 7007,
+ "name": "identifierHash",
+ "nodeType": "VariableDeclaration",
+ "scope": 7030,
+ "src": "2371:22:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 7006,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "2371:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 7014,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 7011,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7001,
+ "src": "2423:10:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 7009,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45574,
+ "src": "2406:3:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 7010,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encodePacked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2406:16:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 7012,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2406:28:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 7008,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45581,
+ "src": "2396:9:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 7013,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2396:39:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2371:64:19"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 7022,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 7016,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6905,
+ "src": "2449:8:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 7018,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 7017,
+ "name": "identifierHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7007,
+ "src": "2458:14:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2449:24:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 7020,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2485:1:19",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 7019,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2477:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 7021,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2477:10:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "2449:38:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "6964656e74696669657220686173206e6f20726567697374727920656e747279",
+ "id": 7023,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2489:34:19",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_d15abe625df242946c50488116c5d1fa2b82385652a4b98f58b14fa8299917e7",
+ "typeString": "literal_string \"identifier has no registry entry\""
+ },
+ "value": "identifier has no registry entry"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_d15abe625df242946c50488116c5d1fa2b82385652a4b98f58b14fa8299917e7",
+ "typeString": "literal_string \"identifier has no registry entry\""
+ }
+ ],
+ "id": 7015,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45590,
+ 45591
+ ],
+ "referencedDeclaration": 45591,
+ "src": "2441:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 7024,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2441:83:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 7025,
+ "nodeType": "ExpressionStatement",
+ "src": "2441:83:19"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 7026,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6905,
+ "src": "2537:8:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 7028,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 7027,
+ "name": "identifierHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7007,
+ "src": "2546:14:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2537:24:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 7005,
+ "id": 7029,
+ "nodeType": "Return",
+ "src": "2530:31:19"
+ }
+ ]
+ },
+ "documentation": "@notice Gets address associated with the given identifier.\n@param identifier Identifier of contract whose address we want to look up.\n@dev Throws if address not set.",
+ "id": 7031,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getAddressForStringOrDie",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 7002,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 7001,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 7031,
+ "src": "2305:26:19",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 7000,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "2305:6:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2304:28:19"
+ },
+ "returnParameters": {
+ "id": 7005,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 7004,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 7031,
+ "src": "2356:7:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 7003,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2356:7:19",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2355:9:19"
+ },
+ "scope": 7094,
+ "src": "2271:295:19",
+ "stateMutability": "view",
+ "superFunction": 9539,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 7051,
+ "nodeType": "Block",
+ "src": "2815:112:19",
+ "statements": [
+ {
+ "assignments": [
+ 7039
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 7039,
+ "name": "identifierHash",
+ "nodeType": "VariableDeclaration",
+ "scope": 7051,
+ "src": "2821:22:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 7038,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "2821:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 7046,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 7043,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7033,
+ "src": "2873:10:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 7041,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45574,
+ "src": "2856:3:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 7042,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encodePacked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2856:16:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 7044,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2856:28:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 7040,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45581,
+ "src": "2846:9:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 7045,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2846:39:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2821:64:19"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 7047,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6905,
+ "src": "2898:8:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 7049,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 7048,
+ "name": "identifierHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7039,
+ "src": "2907:14:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2898:24:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 7037,
+ "id": 7050,
+ "nodeType": "Return",
+ "src": "2891:31:19"
+ }
+ ]
+ },
+ "documentation": "@notice Gets address associated with the given identifier.\n@param identifier Identifier of contract whose address we want to look up.",
+ "id": 7052,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getAddressForString",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 7034,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 7033,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 7052,
+ "src": "2755:26:19",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 7032,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "2755:6:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2754:28:19"
+ },
+ "returnParameters": {
+ "id": 7037,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 7036,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 7052,
+ "src": "2806:7:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 7035,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2806:7:19",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2805:9:19"
+ },
+ "scope": 7094,
+ "src": "2726:201:19",
+ "stateMutability": "view",
+ "superFunction": 9546,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 7092,
+ "nodeType": "Block",
+ "src": "3481:180:19",
+ "statements": [
+ {
+ "body": {
+ "id": 7088,
+ "nodeType": "Block",
+ "src": "3550:89:19",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 7083,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 7077,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6905,
+ "src": "3562:8:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 7081,
+ "indexExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 7078,
+ "name": "identifierHashes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7055,
+ "src": "3571:16:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
+ "typeString": "bytes32[] calldata"
+ }
+ },
+ "id": 7080,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 7079,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7063,
+ "src": "3588:1:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "3571:19:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "3562:29:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 7082,
+ "name": "sender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7057,
+ "src": "3595:6:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "3562:39:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 7087,
+ "nodeType": "IfStatement",
+ "src": "3558:75:19",
+ "trueBody": {
+ "id": 7086,
+ "nodeType": "Block",
+ "src": "3603:30:19",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 7084,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3620:4:19",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 7061,
+ "id": 7085,
+ "nodeType": "Return",
+ "src": "3613:11:19"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 7069,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 7066,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7063,
+ "src": "3507:1:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 7067,
+ "name": "identifierHashes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7055,
+ "src": "3511:16:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
+ "typeString": "bytes32[] calldata"
+ }
+ },
+ "id": 7068,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3511:23:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "3507:27:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 7089,
+ "initializationExpression": {
+ "assignments": [
+ 7063
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 7063,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 7089,
+ "src": "3492:9:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 7062,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3492:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 7065,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 7064,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3504:1:19",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "3492:13:19"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 7075,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 7070,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7063,
+ "src": "3536:1:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 7073,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3546:1:19",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 7071,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7063,
+ "src": "3540:1:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 7072,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 44171,
+ "src": "3540:5:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 7074,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3540:8:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "3536:12:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 7076,
+ "nodeType": "ExpressionStatement",
+ "src": "3536:12:19"
+ },
+ "nodeType": "ForStatement",
+ "src": "3487:152:19"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "66616c7365",
+ "id": 7090,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3651:5:19",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "false"
+ },
+ "functionReturnParameters": 7061,
+ "id": 7091,
+ "nodeType": "Return",
+ "src": "3644:12:19"
+ }
+ ]
+ },
+ "documentation": "@notice Iterates over provided array of identifiers, getting the address for each.\n Returns true if `sender` matches the address of one of the provided identifiers.\n@param identifierHashes Array of hashes of approved identifiers.\n@param sender Address in question to verify membership.\n@return True if `sender` corresponds to the address of any of `identifiers`\n registry entries.",
+ "id": 7093,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isOneOf",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 7058,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 7055,
+ "name": "identifierHashes",
+ "nodeType": "VariableDeclaration",
+ "scope": 7093,
+ "src": "3385:35:19",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
+ "typeString": "bytes32[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 7053,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "3385:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "id": 7054,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "3385:9:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
+ "typeString": "bytes32[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 7057,
+ "name": "sender",
+ "nodeType": "VariableDeclaration",
+ "scope": 7093,
+ "src": "3422:14:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 7056,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3422:7:19",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3384:53:19"
+ },
+ "returnParameters": {
+ "id": 7061,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 7060,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 7093,
+ "src": "3473:4:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 7059,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "3473:4:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3472:6:19"
+ },
+ "scope": 7094,
+ "src": "3368:293:19",
+ "stateMutability": "view",
+ "superFunction": 9556,
+ "visibility": "external"
+ }
+ ],
+ "scope": 7095,
+ "src": "270:3393:19"
+ }
+ ],
+ "src": "0:3664:19"
+ },
+ "legacyAST": {
+ "absolutePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/Registry.sol",
+ "exportedSymbols": {
+ "Registry": [
+ 7094
+ ]
+ },
+ "id": 7095,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 6888,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".13"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:19"
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "id": 6889,
+ "nodeType": "ImportDirective",
+ "scope": 7095,
+ "sourceUnit": 44332,
+ "src": "26:59:19",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "id": 6890,
+ "nodeType": "ImportDirective",
+ "scope": 7095,
+ "sourceUnit": 44450,
+ "src": "86:63:19",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/interfaces/IRegistry.sol",
+ "file": "./interfaces/IRegistry.sol",
+ "id": 6891,
+ "nodeType": "ImportDirective",
+ "scope": 7095,
+ "sourceUnit": 9558,
+ "src": "151:36:19",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/monorepo/celo-monorepo/packages/protocol/contracts/common/Initializable.sol",
+ "file": "./Initializable.sol",
+ "id": 6892,
+ "nodeType": "ImportDirective",
+ "scope": 7095,
+ "sourceUnit": 4705,
+ "src": "188:29:19",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "baseContracts": [
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 6893,
+ "name": "IRegistry",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 9557,
+ "src": "291:9:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IRegistry_$9557",
+ "typeString": "contract IRegistry"
+ }
+ },
+ "id": 6894,
+ "nodeType": "InheritanceSpecifier",
+ "src": "291:9:19"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 6895,
+ "name": "Ownable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 44449,
+ "src": "302:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Ownable_$44449",
+ "typeString": "contract Ownable"
+ }
+ },
+ "id": 6896,
+ "nodeType": "InheritanceSpecifier",
+ "src": "302:7:19"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 6897,
+ "name": "Initializable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 4704,
+ "src": "311:13:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Initializable_$4704",
+ "typeString": "contract Initializable"
+ }
+ },
+ "id": 6898,
+ "nodeType": "InheritanceSpecifier",
+ "src": "311:13:19"
+ }
+ ],
+ "contractDependencies": [
+ 4704,
+ 9557,
+ 43994,
+ 44449
+ ],
+ "contractKind": "contract",
+ "documentation": "@title Routes identifiers to addresses.",
+ "fullyImplemented": true,
+ "id": 7094,
+ "linearizedBaseContracts": [
+ 7094,
+ 4704,
+ 44449,
+ 43994,
+ 9557
+ ],
+ "name": "Registry",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "id": 6901,
+ "libraryName": {
+ "contractScope": null,
+ "id": 6899,
+ "name": "SafeMath",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 44331,
+ "src": "335:8:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_SafeMath_$44331",
+ "typeString": "library SafeMath"
+ }
+ },
+ "nodeType": "UsingForDirective",
+ "src": "329:27:19",
+ "typeName": {
+ "id": 6900,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "348:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ },
+ {
+ "constant": false,
+ "id": 6905,
+ "name": "registry",
+ "nodeType": "VariableDeclaration",
+ "scope": 7094,
+ "src": "360:43:19",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ },
+ "typeName": {
+ "id": 6904,
+ "keyType": {
+ "id": 6902,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "368:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "360:27:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ },
+ "valueType": {
+ "id": 6903,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "379:7:19",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "public"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 6913,
+ "name": "RegistryUpdated",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 6912,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 6907,
+ "indexed": false,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 6913,
+ "src": "430:17:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 6906,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "430:6:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 6909,
+ "indexed": true,
+ "name": "identifierHash",
+ "nodeType": "VariableDeclaration",
+ "scope": 6913,
+ "src": "449:30:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 6908,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "449:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 6911,
+ "indexed": true,
+ "name": "addr",
+ "nodeType": "VariableDeclaration",
+ "scope": 6913,
+ "src": "481:20:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 6910,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "481:7:19",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "429:73:19"
+ },
+ "src": "408:95:19"
+ },
+ {
+ "body": {
+ "id": 6921,
+ "nodeType": "Block",
+ "src": "702:2:19",
+ "statements": []
+ },
+ "documentation": "@notice Sets initialized == true on implementation contracts\n@param test Set to true to skip implementation initialization",
+ "id": 6922,
+ "implemented": true,
+ "kind": "constructor",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 6918,
+ "name": "test",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6915,
+ "src": "696:4:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 6919,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 6917,
+ "name": "Initializable",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 4704,
+ "src": "682:13:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Initializable_$4704_$",
+ "typeString": "type(contract Initializable)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "682:19:19"
+ }
+ ],
+ "name": "",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 6916,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 6915,
+ "name": "test",
+ "nodeType": "VariableDeclaration",
+ "scope": 6922,
+ "src": "664:9:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 6914,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "664:4:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "663:11:19"
+ },
+ "returnParameters": {
+ "id": 6920,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "702:0:19"
+ },
+ "scope": 7094,
+ "src": "652:52:19",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 6932,
+ "nodeType": "Block",
+ "src": "859:41:19",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 6928,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45587,
+ "src": "884:3:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 6929,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "884:10:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 6927,
+ "name": "_transferOwnership",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44448,
+ "src": "865:18:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 6930,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "865:30:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 6931,
+ "nodeType": "ExpressionStatement",
+ "src": "865:30:19"
+ }
+ ]
+ },
+ "documentation": "@notice Used in place of the constructor to allow the contract to be upgradable via proxy.",
+ "id": 6933,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 6925,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 6924,
+ "name": "initializer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 4703,
+ "src": "847:11:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "847:11:19"
+ }
+ ],
+ "name": "initialize",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 6923,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "835:2:19"
+ },
+ "returnParameters": {
+ "id": 6926,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "859:0:19"
+ },
+ "scope": 7094,
+ "src": "816:84:19",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 6963,
+ "nodeType": "Block",
+ "src": "1183:172:19",
+ "statements": [
+ {
+ "assignments": [
+ 6943
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 6943,
+ "name": "identifierHash",
+ "nodeType": "VariableDeclaration",
+ "scope": 6963,
+ "src": "1189:22:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 6942,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1189:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 6950,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 6947,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6935,
+ "src": "1241:10:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 6945,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45574,
+ "src": "1224:3:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 6946,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encodePacked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1224:16:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 6948,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1224:28:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 6944,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45581,
+ "src": "1214:9:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 6949,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1214:39:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "1189:64:19"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 6955,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 6951,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6905,
+ "src": "1259:8:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 6953,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 6952,
+ "name": "identifierHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6943,
+ "src": "1268:14:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "1259:24:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 6954,
+ "name": "addr",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6937,
+ "src": "1286:4:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "1259:31:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 6956,
+ "nodeType": "ExpressionStatement",
+ "src": "1259:31:19"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 6958,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6935,
+ "src": "1317:10:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 6959,
+ "name": "identifierHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6943,
+ "src": "1329:14:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 6960,
+ "name": "addr",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6937,
+ "src": "1345:4:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ },
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 6957,
+ "name": "RegistryUpdated",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6913,
+ "src": "1301:15:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$_t_address_$returns$__$",
+ "typeString": "function (string memory,bytes32,address)"
+ }
+ },
+ "id": 6961,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1301:49:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 6962,
+ "nodeType": "EmitStatement",
+ "src": "1296:54:19"
+ }
+ ]
+ },
+ "documentation": "@notice Associates the given address with the given identifier.\n@param identifier Identifier of contract whose address we want to set.\n@param addr Address of contract.",
+ "id": 6964,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 6940,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 6939,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44382,
+ "src": "1173:9:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "1173:9:19"
+ }
+ ],
+ "name": "setAddressFor",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 6938,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 6935,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 6964,
+ "src": "1122:26:19",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 6934,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "1122:6:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 6937,
+ "name": "addr",
+ "nodeType": "VariableDeclaration",
+ "scope": 6964,
+ "src": "1150:12:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 6936,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1150:7:19",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1121:42:19"
+ },
+ "returnParameters": {
+ "id": 6941,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "1183:0:19"
+ },
+ "scope": 7094,
+ "src": "1099:256:19",
+ "stateMutability": "nonpayable",
+ "superFunction": 9518,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 6986,
+ "nodeType": "Block",
+ "src": "1649:131:19",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 6978,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 6972,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6905,
+ "src": "1663:8:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 6974,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 6973,
+ "name": "identifierHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6966,
+ "src": "1672:14:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "1663:24:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 6976,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1699:1:19",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 6975,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "1691:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 6977,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1691:10:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "1663:38:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "6964656e74696669657220686173206e6f20726567697374727920656e747279",
+ "id": 6979,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1703:34:19",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_d15abe625df242946c50488116c5d1fa2b82385652a4b98f58b14fa8299917e7",
+ "typeString": "literal_string \"identifier has no registry entry\""
+ },
+ "value": "identifier has no registry entry"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_d15abe625df242946c50488116c5d1fa2b82385652a4b98f58b14fa8299917e7",
+ "typeString": "literal_string \"identifier has no registry entry\""
+ }
+ ],
+ "id": 6971,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45590,
+ 45591
+ ],
+ "referencedDeclaration": 45591,
+ "src": "1655:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 6980,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1655:83:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 6981,
+ "nodeType": "ExpressionStatement",
+ "src": "1655:83:19"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 6982,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6905,
+ "src": "1751:8:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 6984,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 6983,
+ "name": "identifierHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6966,
+ "src": "1760:14:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "1751:24:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 6970,
+ "id": 6985,
+ "nodeType": "Return",
+ "src": "1744:31:19"
+ }
+ ]
+ },
+ "documentation": "@notice Gets address associated with the given identifierHash.\n@param identifierHash Identifier hash of contract whose address we want to look up.\n@dev Throws if address not set.",
+ "id": 6987,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getAddressForOrDie",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 6967,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 6966,
+ "name": "identifierHash",
+ "nodeType": "VariableDeclaration",
+ "scope": 6987,
+ "src": "1593:22:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 6965,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1593:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1592:24:19"
+ },
+ "returnParameters": {
+ "id": 6970,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 6969,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 6987,
+ "src": "1640:7:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 6968,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1640:7:19",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1639:9:19"
+ },
+ "scope": 7094,
+ "src": "1565:215:19",
+ "stateMutability": "view",
+ "superFunction": 9525,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 6998,
+ "nodeType": "Block",
+ "src": "2032:42:19",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 6994,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6905,
+ "src": "2045:8:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 6996,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 6995,
+ "name": "identifierHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6989,
+ "src": "2054:14:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2045:24:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 6993,
+ "id": 6997,
+ "nodeType": "Return",
+ "src": "2038:31:19"
+ }
+ ]
+ },
+ "documentation": "@notice Gets address associated with the given identifierHash.\n@param identifierHash Identifier hash of contract whose address we want to look up.",
+ "id": 6999,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getAddressFor",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 6990,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 6989,
+ "name": "identifierHash",
+ "nodeType": "VariableDeclaration",
+ "scope": 6999,
+ "src": "1976:22:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 6988,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1976:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1975:24:19"
+ },
+ "returnParameters": {
+ "id": 6993,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 6992,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 6999,
+ "src": "2023:7:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 6991,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2023:7:19",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2022:9:19"
+ },
+ "scope": 7094,
+ "src": "1953:121:19",
+ "stateMutability": "view",
+ "superFunction": 9532,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 7030,
+ "nodeType": "Block",
+ "src": "2365:201:19",
+ "statements": [
+ {
+ "assignments": [
+ 7007
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 7007,
+ "name": "identifierHash",
+ "nodeType": "VariableDeclaration",
+ "scope": 7030,
+ "src": "2371:22:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 7006,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "2371:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 7014,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 7011,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7001,
+ "src": "2423:10:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 7009,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45574,
+ "src": "2406:3:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 7010,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encodePacked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2406:16:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 7012,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2406:28:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 7008,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45581,
+ "src": "2396:9:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 7013,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2396:39:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2371:64:19"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 7022,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 7016,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6905,
+ "src": "2449:8:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 7018,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 7017,
+ "name": "identifierHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7007,
+ "src": "2458:14:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2449:24:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 7020,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2485:1:19",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 7019,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "2477:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 7021,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2477:10:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "2449:38:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "6964656e74696669657220686173206e6f20726567697374727920656e747279",
+ "id": 7023,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "2489:34:19",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_d15abe625df242946c50488116c5d1fa2b82385652a4b98f58b14fa8299917e7",
+ "typeString": "literal_string \"identifier has no registry entry\""
+ },
+ "value": "identifier has no registry entry"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_d15abe625df242946c50488116c5d1fa2b82385652a4b98f58b14fa8299917e7",
+ "typeString": "literal_string \"identifier has no registry entry\""
+ }
+ ],
+ "id": 7015,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 45590,
+ 45591
+ ],
+ "referencedDeclaration": 45591,
+ "src": "2441:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 7024,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2441:83:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 7025,
+ "nodeType": "ExpressionStatement",
+ "src": "2441:83:19"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 7026,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6905,
+ "src": "2537:8:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 7028,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 7027,
+ "name": "identifierHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7007,
+ "src": "2546:14:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2537:24:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 7005,
+ "id": 7029,
+ "nodeType": "Return",
+ "src": "2530:31:19"
+ }
+ ]
+ },
+ "documentation": "@notice Gets address associated with the given identifier.\n@param identifier Identifier of contract whose address we want to look up.\n@dev Throws if address not set.",
+ "id": 7031,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getAddressForStringOrDie",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 7002,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 7001,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 7031,
+ "src": "2305:26:19",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 7000,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "2305:6:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2304:28:19"
+ },
+ "returnParameters": {
+ "id": 7005,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 7004,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 7031,
+ "src": "2356:7:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 7003,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2356:7:19",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2355:9:19"
+ },
+ "scope": 7094,
+ "src": "2271:295:19",
+ "stateMutability": "view",
+ "superFunction": 9539,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 7051,
+ "nodeType": "Block",
+ "src": "2815:112:19",
+ "statements": [
+ {
+ "assignments": [
+ 7039
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 7039,
+ "name": "identifierHash",
+ "nodeType": "VariableDeclaration",
+ "scope": 7051,
+ "src": "2821:22:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 7038,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "2821:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 7046,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 7043,
+ "name": "identifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7033,
+ "src": "2873:10:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 7041,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45574,
+ "src": "2856:3:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 7042,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encodePacked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "2856:16:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 7044,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2856:28:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 7040,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 45581,
+ "src": "2846:9:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 7045,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2846:39:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2821:64:19"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 7047,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6905,
+ "src": "2898:8:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 7049,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 7048,
+ "name": "identifierHash",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7039,
+ "src": "2907:14:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "2898:24:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "functionReturnParameters": 7037,
+ "id": 7050,
+ "nodeType": "Return",
+ "src": "2891:31:19"
+ }
+ ]
+ },
+ "documentation": "@notice Gets address associated with the given identifier.\n@param identifier Identifier of contract whose address we want to look up.",
+ "id": 7052,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getAddressForString",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 7034,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 7033,
+ "name": "identifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 7052,
+ "src": "2755:26:19",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 7032,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "2755:6:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2754:28:19"
+ },
+ "returnParameters": {
+ "id": 7037,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 7036,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 7052,
+ "src": "2806:7:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 7035,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "2806:7:19",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "2805:9:19"
+ },
+ "scope": 7094,
+ "src": "2726:201:19",
+ "stateMutability": "view",
+ "superFunction": 9546,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 7092,
+ "nodeType": "Block",
+ "src": "3481:180:19",
+ "statements": [
+ {
+ "body": {
+ "id": 7088,
+ "nodeType": "Block",
+ "src": "3550:89:19",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 7083,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 7077,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 6905,
+ "src": "3562:8:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
+ "typeString": "mapping(bytes32 => address)"
+ }
+ },
+ "id": 7081,
+ "indexExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 7078,
+ "name": "identifierHashes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7055,
+ "src": "3571:16:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
+ "typeString": "bytes32[] calldata"
+ }
+ },
+ "id": 7080,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 7079,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7063,
+ "src": "3588:1:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "3571:19:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "3562:29:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 7082,
+ "name": "sender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7057,
+ "src": "3595:6:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "3562:39:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 7087,
+ "nodeType": "IfStatement",
+ "src": "3558:75:19",
+ "trueBody": {
+ "id": 7086,
+ "nodeType": "Block",
+ "src": "3603:30:19",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 7084,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3620:4:19",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 7061,
+ "id": 7085,
+ "nodeType": "Return",
+ "src": "3613:11:19"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 7069,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 7066,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7063,
+ "src": "3507:1:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 7067,
+ "name": "identifierHashes",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7055,
+ "src": "3511:16:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
+ "typeString": "bytes32[] calldata"
+ }
+ },
+ "id": 7068,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "3511:23:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "3507:27:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 7089,
+ "initializationExpression": {
+ "assignments": [
+ 7063
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 7063,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 7089,
+ "src": "3492:9:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 7062,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3492:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 7065,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 7064,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3504:1:19",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "3492:13:19"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 7075,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 7070,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7063,
+ "src": "3536:1:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 7073,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3546:1:19",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 7071,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7063,
+ "src": "3540:1:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 7072,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 44171,
+ "src": "3540:5:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 7074,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "3540:8:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "3536:12:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 7076,
+ "nodeType": "ExpressionStatement",
+ "src": "3536:12:19"
+ },
+ "nodeType": "ForStatement",
+ "src": "3487:152:19"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "66616c7365",
+ "id": 7090,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3651:5:19",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "false"
+ },
+ "functionReturnParameters": 7061,
+ "id": 7091,
+ "nodeType": "Return",
+ "src": "3644:12:19"
+ }
+ ]
+ },
+ "documentation": "@notice Iterates over provided array of identifiers, getting the address for each.\n Returns true if `sender` matches the address of one of the provided identifiers.\n@param identifierHashes Array of hashes of approved identifiers.\n@param sender Address in question to verify membership.\n@return True if `sender` corresponds to the address of any of `identifiers`\n registry entries.",
+ "id": 7093,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "isOneOf",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 7058,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 7055,
+ "name": "identifierHashes",
+ "nodeType": "VariableDeclaration",
+ "scope": 7093,
+ "src": "3385:35:19",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
+ "typeString": "bytes32[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 7053,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "3385:7:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "id": 7054,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "3385:9:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
+ "typeString": "bytes32[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 7057,
+ "name": "sender",
+ "nodeType": "VariableDeclaration",
+ "scope": 7093,
+ "src": "3422:14:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 7056,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "3422:7:19",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3384:53:19"
+ },
+ "returnParameters": {
+ "id": 7061,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 7060,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 7093,
+ "src": "3473:4:19",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 7059,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "3473:4:19",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3472:6:19"
+ },
+ "scope": 7094,
+ "src": "3368:293:19",
+ "stateMutability": "view",
+ "superFunction": 9556,
+ "visibility": "external"
+ }
+ ],
+ "scope": 7095,
+ "src": "270:3393:19"
+ }
+ ],
+ "src": "0:3664:19"
+ },
+ "compiler": {
+ "name": "solc",
+ "version": "0.5.13+commit.5b0b510c.Emscripten.clang"
+ },
+ "networks": {},
+ "schemaVersion": "3.0.23",
+ "updatedAt": "2022-09-23T14:52:45.919Z",
+ "devdoc": {
+ "methods": {
+ "constructor": {
+ "params": {
+ "test": "Set to true to skip implementation initialization"
+ }
+ },
+ "getAddressFor(bytes32)": {
+ "params": {
+ "identifierHash": "Identifier hash of contract whose address we want to look up."
+ }
+ },
+ "getAddressForOrDie(bytes32)": {
+ "details": "Throws if address not set.",
+ "params": {
+ "identifierHash": "Identifier hash of contract whose address we want to look up."
+ }
+ },
+ "getAddressForString(string)": {
+ "params": {
+ "identifier": "Identifier of contract whose address we want to look up."
+ }
+ },
+ "getAddressForStringOrDie(string)": {
+ "details": "Throws if address not set.",
+ "params": {
+ "identifier": "Identifier of contract whose address we want to look up."
+ }
+ },
+ "isOneOf(bytes32[],address)": {
+ "params": {
+ "identifierHashes": "Array of hashes of approved identifiers.",
+ "sender": "Address in question to verify membership."
+ },
+ "return": "True if `sender` corresponds to the address of any of `identifiers` registry entries."
+ },
+ "isOwner()": {
+ "details": "Returns true if the caller is the current owner."
+ },
+ "owner()": {
+ "details": "Returns the address of the current owner."
+ },
+ "renounceOwnership()": {
+ "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
+ },
+ "setAddressFor(string,address)": {
+ "params": {
+ "addr": "Address of contract.",
+ "identifier": "Identifier of contract whose address we want to set."
+ }
+ },
+ "transferOwnership(address)": {
+ "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
+ }
+ },
+ "title": "Routes identifiers to addresses."
+ },
+ "userdoc": {
+ "methods": {
+ "constructor": "Sets initialized == true on implementation contracts",
+ "getAddressFor(bytes32)": {
+ "notice": "Gets address associated with the given identifierHash."
+ },
+ "getAddressForOrDie(bytes32)": {
+ "notice": "Gets address associated with the given identifierHash."
+ },
+ "getAddressForString(string)": {
+ "notice": "Gets address associated with the given identifier."
+ },
+ "getAddressForStringOrDie(string)": {
+ "notice": "Gets address associated with the given identifier."
+ },
+ "initialize()": {
+ "notice": "Used in place of the constructor to allow the contract to be upgradable via proxy."
+ },
+ "isOneOf(bytes32[],address)": {
+ "notice": "Iterates over provided array of identifiers, getting the address for each. Returns true if `sender` matches the address of one of the provided identifiers."
+ },
+ "setAddressFor(string,address)": {
+ "notice": "Associates the given address with the given identifier."
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/devtip/packages/react-app/abis/StableToken.json b/devtip/packages/react-app/abis/StableToken.json
new file mode 100644
index 00000000..4ee15f17
--- /dev/null
+++ b/devtip/packages/react-app/abis/StableToken.json
@@ -0,0 +1,38273 @@
+{
+ "contractName": "StableToken",
+ "abi": [
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "test",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Approval",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "factor",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "lastUpdated",
+ "type": "uint256"
+ }
+ ],
+ "name": "InflationFactorUpdated",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "rate",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "updatePeriod",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "lastUpdated",
+ "type": "uint256"
+ }
+ ],
+ "name": "InflationParametersUpdated",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousOwner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "OwnershipTransferred",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "registryAddress",
+ "type": "address"
+ }
+ ],
+ "name": "RegistrySet",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Transfer",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "comment",
+ "type": "string"
+ }
+ ],
+ "name": "TransferComment",
+ "type": "event"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "sender",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes",
+ "name": "blsKey",
+ "type": "bytes"
+ },
+ {
+ "internalType": "bytes",
+ "name": "blsPop",
+ "type": "bytes"
+ }
+ ],
+ "name": "checkProofOfPossession",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "aNumerator",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "aDenominator",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "bNumerator",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "bDenominator",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "exponent",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "_decimals",
+ "type": "uint256"
+ }
+ ],
+ "name": "fractionMulExp",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "header",
+ "type": "bytes"
+ }
+ ],
+ "name": "getBlockNumberFromHeader",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "getEpochNumber",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "blockNumber",
+ "type": "uint256"
+ }
+ ],
+ "name": "getEpochNumberOfBlock",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "getEpochSize",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "blockNumber",
+ "type": "uint256"
+ }
+ ],
+ "name": "getParentSealBitmap",
+ "outputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "header",
+ "type": "bytes"
+ }
+ ],
+ "name": "getVerifiedSealBitmapFromHeader",
+ "outputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "header",
+ "type": "bytes"
+ }
+ ],
+ "name": "hashHeader",
+ "outputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "initialized",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "isOwner",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "blockNumber",
+ "type": "uint256"
+ }
+ ],
+ "name": "minQuorumSize",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "minQuorumSizeInCurrentSet",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "numberValidatorsInCurrentSet",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "blockNumber",
+ "type": "uint256"
+ }
+ ],
+ "name": "numberValidatorsInSet",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "owner",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "registry",
+ "outputs": [
+ {
+ "internalType": "contract IRegistry",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [],
+ "name": "renounceOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "registryAddress",
+ "type": "address"
+ }
+ ],
+ "name": "setRegistry",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "transferOwnership",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "index",
+ "type": "uint256"
+ }
+ ],
+ "name": "validatorSignerAddressFromCurrentSet",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "index",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "blockNumber",
+ "type": "uint256"
+ }
+ ],
+ "name": "validatorSignerAddressFromSet",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "getVersionNumber",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "pure",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "_name",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "_symbol",
+ "type": "string"
+ },
+ {
+ "internalType": "uint8",
+ "name": "_decimals",
+ "type": "uint8"
+ },
+ {
+ "internalType": "address",
+ "name": "registryAddress",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "inflationRate",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "inflationFactorUpdatePeriod",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address[]",
+ "name": "initialBalanceAddresses",
+ "type": "address[]"
+ },
+ {
+ "internalType": "uint256[]",
+ "name": "initialBalanceValues",
+ "type": "uint256[]"
+ },
+ {
+ "internalType": "string",
+ "name": "exchangeIdentifier",
+ "type": "string"
+ }
+ ],
+ "name": "initialize",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "rate",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "updatePeriod",
+ "type": "uint256"
+ }
+ ],
+ "name": "setInflationParameters",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "increaseAllowance",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "decreaseAllowance",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "approve",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "mint",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "comment",
+ "type": "string"
+ }
+ ],
+ "name": "transferWithComment",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "burn",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "transferFrom",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "name",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "decimals",
+ "outputs": [
+ {
+ "internalType": "uint8",
+ "name": "",
+ "type": "uint8"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "accountOwner",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ }
+ ],
+ "name": "allowance",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "accountOwner",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOf",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "getInflationParameters",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "valueToUnits",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "getExchangeRegistryId",
+ "outputs": [
+ {
+ "internalType": "bytes32",
+ "name": "",
+ "type": "bytes32"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "units",
+ "type": "uint256"
+ }
+ ],
+ "name": "unitsToValue",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "transfer",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "debitGasFees",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "feeRecipient",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "gatewayFeeRecipient",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "communityFund",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "refund",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "tipTxFee",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "gatewayFee",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "baseTxFee",
+ "type": "uint256"
+ }
+ ],
+ "name": "creditGasFees",
+ "outputs": [],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+ ],
+ "metadata": "{\"compiler\":{\"version\":\"0.5.13+commit.5b0b510c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"test\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"factor\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lastUpdated\",\"type\":\"uint256\"}],\"name\":\"InflationFactorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"updatePeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lastUpdated\",\"type\":\"uint256\"}],\"name\":\"InflationParametersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"registryAddress\",\"type\":\"address\"}],\"name\":\"RegistrySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"comment\",\"type\":\"string\"}],\"name\":\"TransferComment\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"accountOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"accountOwner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"blsKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPop\",\"type\":\"bytes\"}],\"name\":\"checkProofOfPossession\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gatewayFeeRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"communityFund\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"refund\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tipTxFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gatewayFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseTxFee\",\"type\":\"uint256\"}],\"name\":\"creditGasFees\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"debitGasFees\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"aNumerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"aDenominator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bNumerator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bDenominator\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"exponent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_decimals\",\"type\":\"uint256\"}],\"name\":\"fractionMulExp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"header\",\"type\":\"bytes\"}],\"name\":\"getBlockNumberFromHeader\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getEpochNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getEpochNumberOfBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getEpochSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getExchangeRegistryId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getInflationParameters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getParentSealBitmap\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"header\",\"type\":\"bytes\"}],\"name\":\"getVerifiedSealBitmapFromHeader\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getVersionNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"header\",\"type\":\"bytes\"}],\"name\":\"hashHeader\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"registryAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inflationRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inflationFactorUpdatePeriod\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"initialBalanceAddresses\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"initialBalanceValues\",\"type\":\"uint256[]\"},{\"internalType\":\"string\",\"name\":\"exchangeIdentifier\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"minQuorumSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"minQuorumSizeInCurrentSet\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"numberValidatorsInCurrentSet\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"numberValidatorsInSet\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IRegistry\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatePeriod\",\"type\":\"uint256\"}],\"name\":\"setInflationParameters\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"registryAddress\",\"type\":\"address\"}],\"name\":\"setRegistry\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"comment\",\"type\":\"string\"}],\"name\":\"transferWithComment\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"units\",\"type\":\"uint256\"}],\"name\":\"unitsToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"validatorSignerAddressFromCurrentSet\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"validatorSignerAddressFromSet\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToUnits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"params\":{\"accountOwner\":\"The owner of the StableToken.\",\"spender\":\"The spender of the StableToken.\"},\"return\":\"The amount of StableToken owner is allowing spender to spend.\"},\"approve(address,uint256)\":{\"params\":{\"spender\":\"The address which is being approved to spend StableToken.\",\"value\":\"The amount of StableToken approved to the spender.\"},\"return\":\"True if the transaction succeeds.\"},\"balanceOf(address)\":{\"params\":{\"accountOwner\":\"The address to query the balance of.\"},\"return\":\"The balance of the specified address.\"},\"burn(uint256)\":{\"params\":{\"value\":\"The amount of StableToken to burn.\"}},\"checkProofOfPossession(address,bytes,bytes)\":{\"params\":{\"blsKey\":\"The BLS public key that the validator is using for consensus, should pass proof of possession. 48 bytes.\",\"blsPop\":\"The BLS public key proof-of-possession, which consists of a signature on the account address. 96 bytes.\",\"sender\":\"The address signed by the BLS key to generate the proof of possession.\"},\"return\":\"True upon success.\"},\"constructor\":{\"params\":{\"test\":\"Set to true to skip implementation initialization\"}},\"creditGasFees(address,address,address,address,uint256,uint256,uint256,uint256)\":{\"details\":\"Note that this function is called by the protocol when paying for tx fees in this currency. Before the tx is executed, gas is debited from the sender via a call to `debitGasFees`. Note too that the events emitted by `creditGasFees` reflect the *net* gas fee payments for the transaction.\",\"params\":{\"baseTxFee\":\"Community fund fee\",\"communityFund\":\"Community fund address\",\"feeRecipient\":\"Coinbase address\",\"from\":\"The account to debit balance from\",\"gatewayFee\":\"Gateway fee\",\"gatewayFeeRecipient\":\"Gateway address\",\"tipTxFee\":\"Coinbase fee\"}},\"debitGasFees(address,uint256)\":{\"details\":\"Note that this function is called by the protocol when paying for tx fees in this currency. After the tx is executed, gas is refunded to the sender and credited to the various tx fee recipients via a call to `creditGasFees`. Note too that the events emitted by `creditGasFees` reflect the *net* gas fee payments for the transaction.\",\"params\":{\"from\":\"The account to reserve balance from\",\"value\":\"The amount of balance to reserve\"}},\"decimals()\":{\"return\":\"The number of decimal places to which StableToken is divisible.\"},\"decreaseAllowance(address,uint256)\":{\"params\":{\"spender\":\"The address which is being approved to spend StableToken.\",\"value\":\"The decrement of the amount of StableToken approved to the spender.\"},\"return\":\"True if the transaction succeeds.\"},\"fractionMulExp(uint256,uint256,uint256,uint256,uint256,uint256)\":{\"params\":{\"_decimals\":\"precision\",\"aDenominator\":\"Denominator of first fraction\",\"aNumerator\":\"Numerator of first fraction\",\"bDenominator\":\"Denominator of exponentiated fraction\",\"bNumerator\":\"Numerator of exponentiated fraction\",\"exponent\":\"exponent to raise b to\"},\"return\":\"Numerator of the computed quantity (not reduced).Denominator of the computed quantity (not reduced).\"},\"getBlockNumberFromHeader(bytes)\":{\"params\":{\"header\":\"RLP encoded header\"},\"return\":\"Block number.\"},\"getEpochNumber()\":{\"return\":\"Current epoch number.\"},\"getEpochNumberOfBlock(uint256)\":{\"params\":{\"blockNumber\":\"Block number where epoch number is calculated.\"},\"return\":\"Epoch number.\"},\"getEpochSize()\":{\"return\":\"The current epoch size in blocks.\"},\"getExchangeRegistryId()\":{\"details\":\"When this storage is uninitialized, it falls back to the default EXCHANGE_REGISTRY_ID. exchangeRegistryId was introduced after the initial release of cUSD's StableToken, so exchangeRegistryId will be uninitialized for that contract. If cUSD's StableToken exchangeRegistryId were to be correctly initialized, this function could be deprecated in favor of using exchangeRegistryId directly.\",\"return\":\"Registry id for the corresponding exchange.\"},\"getInflationParameters()\":{\"return\":\"ratefactorupdatePeriodfactorLastUpdated\"},\"getParentSealBitmap(uint256)\":{\"params\":{\"blockNumber\":\"Block number to retrieve. Must be within 4 epochs of the current number.\"},\"return\":\"Bitmap parent seal with set bits at indices corresponding to signing validators.\"},\"getVerifiedSealBitmapFromHeader(bytes)\":{\"params\":{\"header\":\"RLP encoded header\"},\"return\":\"Bitmap parent seal with set bits at indices correspoinding to signing validators.\"},\"getVersionNumber()\":{\"return\":\"Storage version of the contract.Major version of the contract.Minor version of the contract.Patch version of the contract.\"},\"hashHeader(bytes)\":{\"params\":{\"header\":\"RLP encoded header\"},\"return\":\"Header hash.\"},\"increaseAllowance(address,uint256)\":{\"params\":{\"spender\":\"The address which is being approved to spend StableToken.\",\"value\":\"The increment of the amount of StableToken approved to the spender.\"},\"return\":\"True if the transaction succeeds.\"},\"initialize(string,string,uint8,address,uint256,uint256,address[],uint256[],string)\":{\"params\":{\"_decimals\":\"Tokens are divisible to this many decimal places.\",\"_name\":\"The name of the stable token (English)\",\"_symbol\":\"A short symbol identifying the token (e.g. \\\"cUSD\\\")\",\"exchangeIdentifier\":\"String identifier of exchange in registry (for specific fiat pairs)\",\"inflationFactorUpdatePeriod\":\"How often the inflation factor is updated, in seconds.\",\"inflationRate\":\"Weekly inflation rate.\",\"initialBalanceAddresses\":\"Array of addresses with an initial balance.\",\"initialBalanceValues\":\"Array of balance values corresponding to initialBalanceAddresses.\",\"registryAddress\":\"Address of the Registry contract.\"}},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"minQuorumSize(uint256)\":{\"details\":\"Computed in celo-blockchain as int(math.Ceil(float64(2*valSet.Size()) / 3))\"},\"minQuorumSizeInCurrentSet()\":{\"return\":\"Byzantine quorum of validators.\"},\"mint(address,uint256)\":{\"params\":{\"to\":\"The account for which to mint tokens.\",\"value\":\"The amount of StableToken to mint.\"}},\"name()\":{\"return\":\"The name of the stable token.\"},\"numberValidatorsInCurrentSet()\":{\"return\":\"Size of the current elected validator set.\"},\"numberValidatorsInSet(uint256)\":{\"params\":{\"blockNumber\":\"Block number to retrieve the validator set from.\"},\"return\":\"Size of the validator set.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setInflationParameters(uint256,uint256)\":{\"params\":{\"rate\":\"New rate.\",\"updatePeriod\":\"How often inflationFactor is updated.\"}},\"setRegistry(address)\":{\"params\":{\"registryAddress\":\"The address of a registry contract for routing to other contracts.\"}},\"symbol()\":{\"return\":\"The symbol of the stable token.\"},\"totalSupply()\":{\"details\":\"Though totalSupply_ is stored in units, this returns value.\",\"return\":\"The total value of StableToken in existence\"},\"transfer(address,uint256)\":{\"params\":{\"to\":\"The address to transfer to.\",\"value\":\"The amount to be transferred.\"}},\"transferFrom(address,address,uint256)\":{\"params\":{\"from\":\"The address to transfer StableToken from.\",\"to\":\"The address to transfer StableToken to.\",\"value\":\"The amount of StableToken to transfer.\"},\"return\":\"True if the transaction succeeds.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"transferWithComment(address,uint256,string)\":{\"params\":{\"comment\":\"The transfer comment.\",\"to\":\"The address to transfer to.\",\"value\":\"The amount to be transferred.\"},\"return\":\"True if the transaction succeeds.\"},\"unitsToValue(uint256)\":{\"params\":{\"units\":\"The units to convert to value.\"},\"return\":\"The value corresponding to `units` given the current inflation factor.\"},\"validatorSignerAddressFromCurrentSet(uint256)\":{\"params\":{\"index\":\"Index of requested validator in the validator set.\"},\"return\":\"Address of validator at the requested index.\"},\"validatorSignerAddressFromSet(uint256,uint256)\":{\"params\":{\"blockNumber\":\"Block number to retrieve the validator set from.\",\"index\":\"Index of requested validator in the validator set.\"},\"return\":\"Address of validator at the requested index.\"},\"valueToUnits(uint256)\":{\"details\":\"We don't compute the updated inflationFactor here because we assume any function calling this will have updated the inflation factor.\",\"params\":{\"value\":\"The value to convert to units.\"},\"return\":\"The units corresponding to `value` given the current inflation factor.\"}},\"title\":\"An ERC20 compliant token with adjustable supply.\"},\"userdoc\":{\"methods\":{\"allowance(address,address)\":{\"notice\":\"Gets the amount of owner's StableToken allowed to be spent by spender.\"},\"approve(address,uint256)\":{\"notice\":\"Approve a user to transfer StableToken on behalf of another user.\"},\"balanceOf(address)\":{\"notice\":\"Gets the balance of the specified address using the presently stored inflation factor.\"},\"burn(uint256)\":{\"notice\":\"Burns StableToken from the balance of msg.sender.\"},\"checkProofOfPossession(address,bytes,bytes)\":{\"notice\":\"Checks a BLS proof of possession.\"},\"constructor\":\"Sets initialized == true on implementation contracts\",\"creditGasFees(address,address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Alternative function to credit balance after making payments for gas in this StableToken currency.\"},\"debitGasFees(address,uint256)\":{\"notice\":\"Reserve balance for making payments for gas in this StableToken currency.\"},\"decreaseAllowance(address,uint256)\":{\"notice\":\"Decrease the allowance of another user.\"},\"fractionMulExp(uint256,uint256,uint256,uint256,uint256,uint256)\":{\"notice\":\"calculate a * b^x for fractions a, b to `decimals` precision\"},\"getBlockNumberFromHeader(bytes)\":{\"notice\":\"Parses block number out of header.\"},\"getEpochNumber()\":{\"notice\":\"Returns the epoch number at a block.\"},\"getEpochNumberOfBlock(uint256)\":{\"notice\":\"Returns the epoch number at a block.\"},\"getEpochSize()\":{\"notice\":\"Returns the current epoch size in blocks.\"},\"getExchangeRegistryId()\":{\"notice\":\"Returns the exchange id in the registry of the corresponding fiat pair exchange.\"},\"getInflationParameters()\":{\"notice\":\"gets inflation parameters.\"},\"getParentSealBitmap(uint256)\":{\"notice\":\"Gets the parent seal bitmap from the header at the given block number.\"},\"getVerifiedSealBitmapFromHeader(bytes)\":{\"notice\":\"Verifies the BLS signature on the header and returns the seal bitmap. The validator set used for verification is retrieved based on the parent hash field of the header. If the parent hash is not in the blockchain, verification fails.\"},\"getVersionNumber()\":{\"notice\":\"Returns the storage, major, minor, and patch version of the contract.\"},\"hashHeader(bytes)\":{\"notice\":\"Computes hash of header.\"},\"increaseAllowance(address,uint256)\":{\"notice\":\"Increase the allowance of another user.\"},\"minQuorumSize(uint256)\":{\"notice\":\"Returns the minimum number of required signers for a given block number.\"},\"minQuorumSizeInCurrentSet()\":{\"notice\":\"Computes byzantine quorum from current validator set size\"},\"mint(address,uint256)\":{\"notice\":\"Mints new StableToken and gives it to 'to'.\"},\"numberValidatorsInCurrentSet()\":{\"notice\":\"Gets the size of the current elected validator set.\"},\"numberValidatorsInSet(uint256)\":{\"notice\":\"Gets the size of the validator set that must sign the given block number.\"},\"setInflationParameters(uint256,uint256)\":{\"notice\":\"Updates Inflation Parameters.\"},\"setRegistry(address)\":{\"notice\":\"Updates the address pointing to a Registry contract.\"},\"transfer(address,uint256)\":{\"notice\":\"Transfers `value` from `msg.sender` to `to`\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfers StableToken from one address to another on behalf of a user.\"},\"transferWithComment(address,uint256,string)\":{\"notice\":\"Transfer token for a specified address\"},\"unitsToValue(uint256)\":{\"notice\":\"Returns the value of a given number of units given the current inflation factor.\"},\"validatorSignerAddressFromCurrentSet(uint256)\":{\"notice\":\"Gets a validator address from the current validator set.\"},\"validatorSignerAddressFromSet(uint256,uint256)\":{\"notice\":\"Gets a validator address from the validator set at the given block number.\"},\"valueToUnits(uint256)\":{\"notice\":\"Returns the units for a given value given the current inflation factor.\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/StableToken.sol\":\"StableToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/CalledByVm.sol\":{\"keccak256\":\"0xd61979452e5da908f604c3797e288c0a819ba6091c0d24ed172af865e87fae6c\",\"urls\":[\"bzz-raw://1051ccf97c4dca2dabbdf9f458c324c92ca54460061c4327e5e25a905ecc351c\",\"dweb:/ipfs/QmVe1A5gqua4eY6wNKFrXu8E3hrU2v1GktDyFVZreHXkjA\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/FixidityLib.sol\":{\"keccak256\":\"0x2f98fa3b3454621817917bae2830806858a96c9457be2c5b6e0bed5b35aaaba3\",\"urls\":[\"bzz-raw://b6bf5cf79debe02093777cc9ddef4616dedd041ccc2618c43ea91c90afd97df6\",\"dweb:/ipfs/QmXonY3FkVy2jnQvLkgDi4LcaniS5DVZ1zpRZecWKWy9Ro\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/Freezable.sol\":{\"keccak256\":\"0x2d264574f693b31cdf1ef1fe44dd07f4ddd60c1979e79fc84b6f3019ceda9ac6\",\"urls\":[\"bzz-raw://eb43996e3f01765f6b4997ef86dceca4af987a9c6f2743de7d29ec887651ea2b\",\"dweb:/ipfs/QmdRfAZ97XBNd42XYQBWVFAx7gAKUuS3KvL41ryxo9YTwT\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/Initializable.sol\":{\"keccak256\":\"0xad98825b5d3181f4ce2d2dbe84adeb0cd7960fd80fafb0813539d6d96ba42ab8\",\"urls\":[\"bzz-raw://f76468328c78b80eeaaaadb7b186e41da4a34134446fe11bb707106322b8e32f\",\"dweb:/ipfs/QmNyjyVjPX1GKFibDcJBJyZQ57nhusG3DhPjAGnY7iaU39\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/UsingPrecompiles.sol\":{\"keccak256\":\"0xb0c39576688963518409df19910b47df18946262666fb0b14f834c449ef8a095\",\"urls\":[\"bzz-raw://6502a36e8b8409ee4b06294f35476f73791a035bb078cb0f680c86622d6d184c\",\"dweb:/ipfs/QmetSeLjwd3Lp3BwyM8yFydSULPnVpToxu3phiL4EesvA3\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/UsingRegistry.sol\":{\"keccak256\":\"0xfdd9e70bd58259b491ec54779715d7469ab4f804836bf5f63ff86921d0cae056\",\"urls\":[\"bzz-raw://e55f23f464e49c42b1f31782dcb88cbd2ca64e050d5f110ccdc2ffd50cd582ff\",\"dweb:/ipfs/QmfBiet9GbT9S9rn9SG9CkyXQGAMQRuk4EBmChY1m4kv47\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/interfaces/IAccounts.sol\":{\"keccak256\":\"0x1ec92ced98458b625f5cc7742e7487c6e9c0042ae86bbd4b5cec293363c543ee\",\"urls\":[\"bzz-raw://bf85ce1ac9c145877666436ce0c9c998ab205a7fe8ec39a90332ac01fecad9f2\",\"dweb:/ipfs/QmYQTztErbUUYf52rAL3xVjFqED91n6Es7RidjDTkuKeM6\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/interfaces/ICeloToken.sol\":{\"keccak256\":\"0xbaab1752a0881844fa2cefac336073c7a037d8a066c27a5558f11006cb594ecc\",\"urls\":[\"bzz-raw://805969c4595cd54d20d9415e2a3e6a4bd1e05990fbb5989328493f8ad86b18ec\",\"dweb:/ipfs/QmeGNYyUtVRUGtjrUNFuoah1dERppUQw9CMtasVsfZvH4V\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/interfaces/ICeloVersionedContract.sol\":{\"keccak256\":\"0x7bf4411df057bec6f7fcc1c25c1f46cd9a8f75118958012b56ecef8a986abd62\",\"urls\":[\"bzz-raw://b08c5c589b31ab774f6d1eb73bf67e111e04a0f1b99cd8e2528f021cf4983100\",\"dweb:/ipfs/Qmao3mnAW1mUixfwtZXvJUCBzK65hzfmvHGgZqHPpXEt3C\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/interfaces/IFeeCurrencyWhitelist.sol\":{\"keccak256\":\"0xd4711baf3e38a0abeb3ef48eaab21aeb917f5e0a185cf463fddeb4bf20277b68\",\"urls\":[\"bzz-raw://8f350863943ab54dcf4d5ea525c16748f59263bf36c1d85251c1164d0e592032\",\"dweb:/ipfs/QmXAG6fvVQKM86rVsk6R3ndEoHtS9fcAAVxBApJ5j3LWeK\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/interfaces/IFreezer.sol\":{\"keccak256\":\"0x12508a9d528d1b63dc06644e9d97e864acc94f8a763cf8555e90bcdf1b2f8b21\",\"urls\":[\"bzz-raw://32df109167a13e684c9b296a0e13dda1899e418788eb59bf59aedd7a3ce65466\",\"dweb:/ipfs/QmR6BJCRFMSQpBpnSH2vzLE959FhXnmreDocWWc7fUYnnu\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/interfaces/IRegistry.sol\":{\"keccak256\":\"0x78ba82722d28e815c117f33d4659404f0707dab1c9b51f1bce5d4c15d6c94537\",\"urls\":[\"bzz-raw://0cea84b948896aece11c64b97c22b0f08f86cb45e166a004db4a88a98952cbfa\",\"dweb:/ipfs/QmR4uSGcs4nmph6duroscchstSwMzWSV8CDvD2SSnWuHbs\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/governance/interfaces/IElection.sol\":{\"keccak256\":\"0xebcd0d7dbbb2df503967ad63c9ddd437cef89a94ba2cc2f9ce274f41a4c901ee\",\"urls\":[\"bzz-raw://84dcf3a9952f1ce9a9110abb1783dfead290fd17c28216c5acb22de9d090921d\",\"dweb:/ipfs/QmeNoLz8WcHX9GLcBfQChXFHsFDRaVRRXnPXXvB2qVTaSZ\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/governance/interfaces/IGovernance.sol\":{\"keccak256\":\"0x227bf6a6b56411c368c9752761e2202ad71f2199deb2b114b125712b63372b7e\",\"urls\":[\"bzz-raw://cabeae6e6c47364291f12cf69658dcf5bdd8ac7eebda53d48a2b03aab96386a3\",\"dweb:/ipfs/QmUtPSC4hVz79XVVjFwQ6CozMd6oAR1m6yrPFkHD5sCdB1\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/governance/interfaces/ILockedGold.sol\":{\"keccak256\":\"0x577d01d8a1fbf47980fb5ffd36de2084ec255889b15671adfecd3a285df4f253\",\"urls\":[\"bzz-raw://6b955b6829748cd136fa92c3a434f5419e4eb024d535a854900ad48bd4151b67\",\"dweb:/ipfs/QmXM5uL5dsKecYyedAzsrZXAp81NtWQErbbVEFccJ6ZqiY\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/governance/interfaces/IValidators.sol\":{\"keccak256\":\"0x524a9e48689537421f97296ffd57fa0f2887117f9af9e71dd5ed17e66ba92d2a\",\"urls\":[\"bzz-raw://cf5d0c2f6ee9b2c8e270162455177e9c3bac79ac07d4f37c86f7f2ee5978a756\",\"dweb:/ipfs/QmZTKmytn1Wi3QfU3bHuSaSeYQzRrFKehyngrg37rHD3vV\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/identity/interfaces/IAttestations.sol\":{\"keccak256\":\"0x979aaac636fe6a64f97034bf0bf062b5f0efd6e6f9f3fe84e81180f82eeb7a3e\",\"urls\":[\"bzz-raw://c1255d08278188247ef81fb09edd2d1d4a019fb0fe80fd3d9850415c5eb5caaf\",\"dweb:/ipfs/QmcJvqSM35nAR8p8LwVczhnaY6VwTRThNjfCzkzeiAkz45\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/identity/interfaces/IRandom.sol\":{\"keccak256\":\"0xd65fd529d133cbde94628b39b0d2f0f4b6d0af2e8f97c0e6b4b2cd476479ed1d\",\"urls\":[\"bzz-raw://f2c6fe351990bfdeb55484bd3622d44c8f58579a7212d5cce71a82df846497f5\",\"dweb:/ipfs/QmRDDTXUqbA6dHfJe4ZS1442JDAfwoHq2eH9LHnQyzsh44\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/StableToken.sol\":{\"keccak256\":\"0x14ecf2f9573e0bdb4edeeb9f04b476acfccdce584499709bf8c417b785b7d79b\",\"urls\":[\"bzz-raw://58f679c94bbc72dce49faa6da4d32956b26951593d46b399953e208383e3c817\",\"dweb:/ipfs/QmaCJHAGbjiFzK4wbeiic8rrQDs5Bu4ghMVqTbaQznNVqR\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/interfaces/IExchange.sol\":{\"keccak256\":\"0xbfcf77e30fc62218decbb73297d5161b9c490f7e44f75158f1c79674e4b8b83c\",\"urls\":[\"bzz-raw://ad0caaddcb552a2c040e827e9336cdec7dfaf629cca9f30e5f5bc12645abde43\",\"dweb:/ipfs/QmTjnGbfoSkZhNWhrbcYdLjF1LLqAJcviJ2ZKSMH9KWz95\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/interfaces/IReserve.sol\":{\"keccak256\":\"0x8da4d702b47a7e60981ca416f2d0f24a3c1dea9ab44f04b695c0fde02c84a38e\",\"urls\":[\"bzz-raw://198fb3cd945e374926e3d6bcb2469b7f5c635e78b40417a4b3a1eacabeca234b\",\"dweb:/ipfs/Qma8RRSqksFCzL5gWTXmGtJvC4Mw1bgquvN33nKhrRwUrD\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/interfaces/ISortedOracles.sol\":{\"keccak256\":\"0x8f80e430800fff2f04f3981c4b73a2a374b2c2150543a2de51fcf7ba4fb08789\",\"urls\":[\"bzz-raw://f1a472385d5fa1b1cc4ab6ff948cd11f86c55328841d89f39f02b64449d3ac1a\",\"dweb:/ipfs/QmSYfwR8RJ2nyzt9VJtLKqaUHwAPfz579vhcQP7LRLaqTe\"]},\"/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/interfaces/IStableToken.sol\":{\"keccak256\":\"0x091e577acecdf050fe4c41133b11fe330d07050c5fe78b65bfce32ccc29e51c6\",\"urls\":[\"bzz-raw://94f7d7578274be8212b8c9a3f0759d884969b05a7f0c64c7c9352102f4e51ab4\",\"dweb:/ipfs/Qmd3bERcFLrrvpURuzKUg6YCSFisNQ36YpRLWkxEcS1Tkj\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\",\"urls\":[\"bzz-raw://cf4c00fc3c37cc5acf0c82ec6fd97bab67d72c2567fdc0ebf023d9c09b30a08e\",\"dweb:/ipfs/Qmb7TChG6DsEDX7LooJ4vmxot19f7VXX8S1zUGPeJTWbwZ\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}",
+ "bytecode": "0x60806040523480156200001157600080fd5b50604051620070be380380620070be833981810160405260208110156200003757600080fd5b81019080805190602001909291905050508060006200005b6200012360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350806200011b576001600060146101000a81548160ff0219169083151502179055505b50506200012b565b600033905090565b616f83806200013b6000396000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c806370a082311161015c578063a457c2d7116100ce578063df4da46111610087578063df4da461146112b1578063e1d6aceb146112cf578063e50e652d1461138a578063ec683072146113cc578063f2fde38b14611447578063fae8db0a1461148b5761027f565b8063a457c2d7146110b4578063a67f87471461111a578063a9059cbb1461114d578063a91ee0dc146111b3578063af31f587146111f7578063dd62ed3e146112395761027f565b80638a883626116101205780638a88362614610e965780638da5cb5b14610f655780638f32d59b14610faf57806395d89b4114610fd15780639a7b3be7146110545780639b2b592f146110725761027f565b806370a0823114610dae578063715018a614610e065780637385e5da14610e105780637b10399914610e2e57806387ee8a0f14610e785761027f565b806339509351116101f55780634b2c2f44116101b95780634b2c2f4414610a4a57806354255be014610b1957806358cf967214610b4c5780635d180adb14610b9a57806367960e9114610c125780636a30b25314610ce15761027f565b806339509351146108d85780633b1eb4bf1461093e57806340a12f641461098057806340c10f191461099e57806342966c6814610a045761027f565b806318160ddd1161024757806318160ddd1461043f5780631e4f0e031461045d578063222836ad1461066c57806323b872dd146106a457806323f0ab651461072a578063313ce567146108b45761027f565b806306fdde0314610284578063095ea7b314610307578063123633ea1461036d57806312c6c099146103db578063158ef93e1461041d575b600080fd5b61028c6114cd565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102cc5780820151818401526020810190506102b1565b50505050905090810190601f1680156102f95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103536004803603604081101561031d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061156f565b604051808215151515815260200191505060405180910390f35b6103996004803603602081101561038357600080fd5b8101908080359060200190929190505050611792565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610407600480360360208110156103f157600080fd5b81019080803590602001909291905050506118e3565b6040518082815260200191505060405180910390f35b61042561190c565b604051808215151515815260200191505060405180910390f35b61044761191f565b6040518082815260200191505060405180910390f35b61066a600480360361012081101561047457600080fd5b810190808035906020019064010000000081111561049157600080fd5b8201836020820111156104a357600080fd5b803590602001918460018302840111640100000000831117156104c557600080fd5b9091929391929390803590602001906401000000008111156104e657600080fd5b8201836020820111156104f857600080fd5b8035906020019184600183028401116401000000008311171561051a57600080fd5b9091929391929390803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561057c57600080fd5b82018360208201111561058e57600080fd5b803590602001918460208302840111640100000000831117156105b057600080fd5b9091929391929390803590602001906401000000008111156105d157600080fd5b8201836020820111156105e357600080fd5b8035906020019184602083028401116401000000008311171561060557600080fd5b90919293919293908035906020019064010000000081111561062657600080fd5b82018360208201111561063857600080fd5b8035906020019184600183028401116401000000008311171561065a57600080fd5b9091929391929390505050611931565b005b6106a26004803603604081101561068257600080fd5b810190808035906020019092919080359060200190929190505050611c57565b005b610710600480360360608110156106ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ebc565b604051808215151515815260200191505060405180910390f35b61089a6004803603606081101561074057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561077d57600080fd5b82018360208201111561078f57600080fd5b803590602001918460018302840111640100000000831117156107b157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561081457600080fd5b82018360208201111561082657600080fd5b8035906020019184600183028401116401000000008311171561084857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612542565b604051808215151515815260200191505060405180910390f35b6108bc6126fb565b604051808260ff1660ff16815260200191505060405180910390f35b610924600480360360408110156108ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612712565b604051808215151515815260200191505060405180910390f35b61096a6004803603602081101561095457600080fd5b81019080803590602001909291905050506129cf565b6040518082815260200191505060405180910390f35b6109886129e9565b6040518082815260200191505060405180910390f35b6109ea600480360360408110156109b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612a4f565b604051808215151515815260200191505060405180910390f35b610a3060048036036020811015610a1a57600080fd5b8101908080359060200190929190505050612eb5565b604051808215151515815260200191505060405180910390f35b610b0360048036036020811015610a6057600080fd5b8101908080359060200190640100000000811115610a7d57600080fd5b820183602082011115610a8f57600080fd5b80359060200191846001830284011164010000000083111715610ab157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506133dc565b6040518082815260200191505060405180910390f35b610b21613570565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b610b9860048036036040811015610b6257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613598565b005b610bd060048036036040811015610bb057600080fd5b8101908080359060200190929190803590602001909291905050506138d6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610ccb60048036036020811015610c2857600080fd5b8101908080359060200190640100000000811115610c4557600080fd5b820183602082011115610c5757600080fd5b80359060200191846001830284011164010000000083111715610c7957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050613a28565b6040518082815260200191505060405180910390f35b610dac6004803603610100811015610cf857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050613bbc565b005b610df060048036036020811015610dc457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613eb2565b6040518082815260200191505060405180910390f35b610e0e613f03565b005b610e1861403c565b6040518082815260200191505060405180910390f35b610e3661404c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610e80614072565b6040518082815260200191505060405180910390f35b610f4f60048036036020811015610eac57600080fd5b8101908080359060200190640100000000811115610ec957600080fd5b820183602082011115610edb57600080fd5b80359060200191846001830284011164010000000083111715610efd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506141b9565b6040518082815260200191505060405180910390f35b610f6d61434d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610fb7614376565b604051808215151515815260200191505060405180910390f35b610fd96143d4565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611019578082015181840152602081019050610ffe565b50505050905090810190601f1680156110465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61105c614476565b6040518082815260200191505060405180910390f35b61109e6004803603602081101561108857600080fd5b8101908080359060200190929190505050614486565b6040518082815260200191505060405180910390f35b611100600480360360408110156110ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506145cf565b604051808215151515815260200191505060405180910390f35b611122614806565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b6111996004803603604081101561116357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061486a565b604051808215151515815260200191505060405180910390f35b6111f5600480360360208110156111c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614a3e565b005b6112236004803603602081101561120d57600080fd5b8101908080359060200190929190505050614be2565b6040518082815260200191505060405180910390f35b61129b6004803603604081101561124f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614c24565b6040518082815260200191505060405180910390f35b6112b9614cab565b6040518082815260200191505060405180910390f35b611370600480360360608110156112e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561132c57600080fd5b82018360208201111561133e57600080fd5b8035906020019184600183028401116401000000008311171561136057600080fd5b9091929391929390505050614de7565b604051808215151515815260200191505060405180910390f35b6113b6600480360360208110156113a057600080fd5b8101908080359060200190929190505050615026565b6040518082815260200191505060405180910390f35b61142a600480360360c08110156113e257600080fd5b81019080803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050615071565b604051808381526020018281526020019250505060405180910390f35b6114896004803603602081101561145d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615285565b005b6114b7600480360360208110156114a157600080fd5b810190808035906020019092919050505061530b565b6040518082815260200191505060405180910390f35b606060028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115655780601f1061153a57610100808354040283529160200191611565565b820191906000526020600020905b81548152906001019060200180831161154857829003601f168201915b5050505050905090565b6000611579616af4565b6000611583615454565b8092508193505050600860030154811461161a5781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a976115f7600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156116a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180616dad602a913960400191505060405180910390fd5b83600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925866040518082815260200191505060405180910390a360019250505092915050565b60006060600060fa73ffffffffffffffffffffffffffffffffffffffff16844360405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061180b57805182526020820191506020810190506020830392506117e8565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461186b576040519150601f19603f3d011682016040523d82523d6000602084013e611870565b606091505b508093508192505050806118cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180616d05603d913960400191505060405180910390fd5b6118da82600061562d565b92505050919050565b60006118ed616af4565b6118f5615454565b50809150506119048184615644565b915050919050565b600060149054906101000a900460ff1681565b600061192c600654614be2565b905090565b600060149054906101000a900460ff16156119b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b6001600060146101000a81548160ff0219169083151502179055506000881415611a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180616c286026913960400191505060405180910390fd5b60008711611a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180616bdb6027913960400191505060405180910390fd5b611a8b33615671565b60006006819055508d8d60029190611aa4929190616b07565b508b8b60039190611ab6929190616b07565b5089600460006101000a81548160ff021916908360ff160217905550611adb886157b5565b600860000160008201518160000155905050611af56157d3565b6008600101600082015181600001559050508660086002018190555042600860030181905550838390508686905014611b96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4172726179206c656e677468206d69736d61746368000000000000000000000081525060200191505060405180910390fd5b60008090505b86869050811015611c0757611beb878783818110611bb657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16868684818110611bdf57fe5b905060200201356157f9565b50611c006001826159f890919063ffffffff16565b9050611b9c565b50611c1189614a3e565b818160405160200180838380828437808301925050509250505060405160208183030381529060405280519060200120600c819055505050505050505050505050505050565b611c5f614376565b611cd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611cd9616af4565b6000611ce3615454565b80925081935050506008600301548114611d7a5781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97611d57600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b6000841415611dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180616c4e6027913960400191505060405180910390fd5b60008311611e4a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f757064617465506572696f64206d757374206265203e2030000000000000000081525060200191505060405180910390fd5b611e53846157b5565b600860000160008201518160000155905050826008600201819055507fa0035d6667ffb7d387c86c7228141c4a877e8ed831b267ac928a2f5b651c155d84844260405180848152602001838152602001828152602001935050505060405180910390a150505050565b6000611ec6616af4565b6000611ed0615454565b80925081935050506008600301548114611f675781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97611f44600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b611f6f615a80565b73ffffffffffffffffffffffffffffffffffffffff1663e5839836306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611feb57600080fd5b505afa158015611fff573d6000803e3d6000fd5b505050506040513d602081101561201557600080fd5b81019080805190602001909291905050501561207c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180616cad6022913960400191505060405180910390fd5b60006120a1600860010160405180602001604052908160008201548152505086615644565b9050600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415612129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180616f02602a913960400191505060405180910390fd5b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156121c1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180616df86029913960400191505060405180910390fd5b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054851115612296576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180616e216038913960400191505060405180910390fd5b6122e881600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546159f890919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061237d81600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615b7b90919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061244f85600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615b7b90919063ffffffff16565b600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3600193505050509392505050565b60008060fb73ffffffffffffffffffffffffffffffffffffffff16858585604051602001808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183805190602001908083835b602083106125cb57805182526020820191506020810190506020830392506125a8565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831061261c57805182526020820191506020810190506020830392506125f9565b6001836020036101000a03801982511681845116808217855250505050505090500193505050506040516020818303038152906040526040518082805190602001908083835b602083106126855780518252602082019150602081019050602083039250612662565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146126e5576040519150601f19603f3d011682016040523d82523d6000602084013e6126ea565b606091505b505080915050809150509392505050565b6000600460009054906101000a900460ff16905090565b600061271c616af4565b6000612726615454565b809250819350505060086003015481146127bd5781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a9761279a600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180616dad602a913960400191505060405180910390fd5b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006128d986836159f890919063ffffffff16565b905080600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3600194505050505092915050565b60006129e2826129dd614cab565b615bc5565b9050919050565b60008060001b600c541415612a465760405160200180807f45786368616e67650000000000000000000000000000000000000000000000008152506008019050604051602081830303815290604052805190602001209050612a4c565b600c5490505b90565b6000612a59616af4565b6000612a63615454565b80925081935050506008600301548114612afa5781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97612ad7600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed612b406129e9565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612b7457600080fd5b505afa158015612b88573d6000803e3d6000fd5b505050506040513d6020811015612b9e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612d065750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd92723360405160200180807f56616c696461746f727300000000000000000000000000000000000000000000815250600a019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612c9c57600080fd5b505afa158015612cb0573d6000803e3d6000fd5b505050506040513d6020811015612cc657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612e2f5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd92723360405160200180807f4772616e64614d656e746f000000000000000000000000000000000000000000815250600b019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612dc557600080fd5b505afa158015612dd9573d6000803e3d6000fd5b505050506040513d6020811015612def57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b612ea1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f53656e646572206e6f7420617574686f72697a656420746f206d696e7400000081525060200191505060405180910390fd5b612eab85856157f9565b9250505092915050565b6000612ebf616af4565b6000612ec9615454565b80925081935050506008600301548114612f605781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97612f3d600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed612fa66129e9565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612fda57600080fd5b505afa158015612fee573d6000803e3d6000fd5b505050506040513d602081101561300457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061316c5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd92723360405160200180807f4772616e64614d656e746f000000000000000000000000000000000000000000815250600b019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561310257600080fd5b505afa158015613116573d6000803e3d6000fd5b505050506040513d602081101561312c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6131de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f53656e646572206e6f7420617574686f72697a656420746f206275726e00000081525060200191505060405180910390fd5b6000613203600860010160405180602001604052908160008201548152505086615644565b9050600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156132ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f76616c75652065786365656465642062616c616e6365206f662073656e64657281525060200191505060405180910390fd5b6132cf81600654615b7b90919063ffffffff16565b60068190555061332781600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615b7b90919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019350505050919050565b60006060600060f473ffffffffffffffffffffffffffffffffffffffff16846040516020018082805190602001908083835b60208310613431578051825260208201915060208101905060208303925061340e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106134985780518252602082019150602081019050602083039250613475565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146134f8576040519150601f19603f3d011682016040523d82523d6000602084013e6134fd565b606091505b5080935081925050508061355c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180616c756038913960400191505060405180910390fd5b613567826000615c0d565b92505050919050565b6000806000806001600260006001839350829250819150809050935093509350935090919293565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461363a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4f6e6c7920564d2063616e2063616c6c0000000000000000000000000000000081525060200191505060405180910390fd5b613642615a80565b73ffffffffffffffffffffffffffffffffffffffff1663e5839836306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156136be57600080fd5b505afa1580156136d2573d6000803e3d6000fd5b505050506040513d60208110156136e857600080fd5b81019080805190602001909291905050501561374f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180616cad6022913960400191505060405180910390fd5b613757616af4565b6000613761615454565b809250819350505060086003015481146137f85781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a976137d5600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b600061381d600860010160405180602001604052908160008201548152505085615644565b905061387181600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615b7b90919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138c981600654615b7b90919063ffffffff16565b6006819055505050505050565b60006060600060fa73ffffffffffffffffffffffffffffffffffffffff16858560405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061394f578051825260208201915060208101905060208303925061392c565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146139af576040519150601f19603f3d011682016040523d82523d6000602084013e6139b4565b606091505b50809350819250505080613a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180616d776036913960400191505060405180910390fd5b613a1e82600061562d565b9250505092915050565b60006060600060f673ffffffffffffffffffffffffffffffffffffffff16846040516020018082805190602001908083835b60208310613a7d5780518252602082019150602081019050602083039250613a5a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310613ae45780518252602082019150602081019050602083039250613ac1565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613b44576040519150601f19603f3d011682016040523d82523d6000602084013e613b49565b606091505b50809350819250505080613ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180616f2c6023913960400191505060405180910390fd5b613bb3826000615c0d565b92505050919050565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613c5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4f6e6c7920564d2063616e2063616c6c0000000000000000000000000000000081525060200191505060405180910390fd5b613c66615a80565b73ffffffffffffffffffffffffffffffffffffffff1663e5839836306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613ce257600080fd5b505afa158015613cf6573d6000803e3d6000fd5b505050506040513d6020811015613d0c57600080fd5b810190808051906020019092919050505015613d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180616cad6022913960400191505060405180910390fd5b6000613d98600860010160405180602001604052908160008201548152505086615644565b9050613dec81600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546159f890919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e4c613e3d8a8885615cae565b826159f890919063ffffffff16565b9050613e6b613e5c8a8a87615cae565b826159f890919063ffffffff16565b9050613e8a613e7b8a8986615cae565b826159f890919063ffffffff16565b9050613ea1816006546159f890919063ffffffff16565b600681905550505050505050505050565b6000613efc600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614be2565b9050919050565b613f0b614376565b613f7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061404743615026565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006060600060f973ffffffffffffffffffffffffffffffffffffffff1643604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b602083106140e357805182526020820191506020810190506020830392506140c0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114614143576040519150601f19603f3d011682016040523d82523d6000602084013e614148565b606091505b508093508192505050806141a7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180616d426035913960400191505060405180910390fd5b6141b282600061562d565b9250505090565b60006060600060f773ffffffffffffffffffffffffffffffffffffffff16846040516020018082805190602001908083835b6020831061420e57805182526020820191506020810190506020830392506141eb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106142755780518252602082019150602081019050602083039250614252565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146142d5576040519150601f19603f3d011682016040523d82523d6000602084013e6142da565b606091505b50809350819250505080614339576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180616ed16031913960400191505060405180910390fd5b61434482600061562d565b92505050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166143b8615e1a565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561446c5780601f106144415761010080835404028352916020019161446c565b820191906000526020600020905b81548152906001019060200180831161444f57829003601f168201915b5050505050905090565b6000614481436129cf565b905090565b60006060600060f973ffffffffffffffffffffffffffffffffffffffff1684604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b602083106144f757805182526020820191506020810190506020830392506144d4565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114614557576040519150601f19603f3d011682016040523d82523d6000602084013e61455c565b606091505b508093508192505050806145bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180616bad602e913960400191505060405180910390fd5b6145c682600061562d565b92505050919050565b60006145d9616af4565b60006145e3615454565b8092508193505050600860030154811461467a5781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97614657600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006147108683615b7b90919063ffffffff16565b905080600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3600194505050505092915050565b60008060008061482e600860000160405180602001604052908160008201548152505061561f565b614850600860010160405180602001604052908160008201548152505061561f565b600860020154600860030154935093509350935090919293565b6000614874616af4565b600061487e615454565b809250819350505060086003015481146149155781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a976148f2600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b61491d615a80565b73ffffffffffffffffffffffffffffffffffffffff1663e5839836306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561499957600080fd5b505afa1580156149ad573d6000803e3d6000fd5b505050506040513d60208110156149c357600080fd5b810190808051906020019092919050505015614a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180616cad6022913960400191505060405180910390fd5b614a348585615e22565b9250505092915050565b614a46614376565b614ab8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614b5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616e6e6f7420726567697374657220746865206e756c6c206164647265737381525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f27fe5f0c1c3b1ed427cc63d0f05759ffdecf9aec9e18d31ef366fc8a6cb5dc3b60405160405180910390a250565b6000614bec616af4565b614bf4615454565b5080915050614c1c614c1782614c0986616102565b61618c90919063ffffffff16565b6162d5565b915050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006060600060f873ffffffffffffffffffffffffffffffffffffffff166040516020016040516020818303038152906040526040518082805190602001908083835b60208310614d115780518252602082019150602081019050602083039250614cee565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114614d71576040519150601f19603f3d011682016040523d82523d6000602084013e614d76565b606091505b50809350819250505080614dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180616e806025913960400191505060405180910390fd5b614de082600061562d565b9250505090565b6000614df1616af4565b6000614dfb615454565b80925081935050506008600301548114614e925781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97614e6f600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b614e9a615a80565b73ffffffffffffffffffffffffffffffffffffffff1663e5839836306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015614f1657600080fd5b505afa158015614f2a573d6000803e3d6000fd5b505050506040513d6020811015614f4057600080fd5b810190808051906020019092919050505015614fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180616cad6022913960400191505060405180910390fd5b6000614fb3888861486a565b90507fe5d4e30fb8364e57bc4d662a07d0cf36f4c34552004c4c3624620a2c1d1c03dc868660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a1809350505050949350505050565b600061506a600361505c600261504e600261504088614486565b6162f690919063ffffffff16565b6159f890919063ffffffff16565b61637c90919063ffffffff16565b9050919050565b60008060008714158015615086575060008514155b6150f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f612064656e6f6d696e61746f72206973207a65726f000000000000000000000081525060200191505060405180910390fd5b6000806000606060fc73ffffffffffffffffffffffffffffffffffffffff168c8c8c8c8c8c6040516020018087815260200186815260200185815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040526040518082805190602001908083835b60208310615192578051825260208201915060208101905060208303925061516f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146151f2576040519150601f19603f3d011682016040523d82523d6000602084013e6151f7565b606091505b50809250819350505081615256576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180616e596027913960400191505060405180910390fd5b61526181600061562d565b935061526e81602061562d565b925083839550955050505050965096945050505050565b61528d614376565b6152ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61530881615671565b50565b60006060600060f573ffffffffffffffffffffffffffffffffffffffff1684604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b6020831061537c5780518252602082019150602081019050602083039250615359565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146153dc576040519150601f19603f3d011682016040523d82523d6000602084013e6153e1565b606091505b50809350819250505080615440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180616ea5602c913960400191505060405180910390fd5b61544b826000615c0d565b92505050919050565b61545c616af4565b600061547b6008600201546008600301546159f890919063ffffffff16565b4210156154ae5760086001016008600301548160405180602001604052908160008201548152505091509150915061561b565b60008060006154e26008600201546154d460086003015442615b7b90919063ffffffff16565b61637c90919063ffffffff16565b9050615564615509600860010160405180602001604052908160008201548152505061561f565b6155196155146157d3565b61561f565b61553b600860000160405180602001604052908160008201548152505061561f565b61554b6155466157d3565b61561f565b85600460009054906101000a900460ff1660ff16615071565b8093508194505050600083148061557b5750600082145b156155af5760086001016008600301548160405180602001604052908160008201548152505091509450945050505061561b565b6155b7616af4565b6155da6155c3846157b5565b6155cc866157b5565b61618c90919063ffffffff16565b9050600061560d6155f9846008600201546162f690919063ffffffff16565b6008600301546159f890919063ffffffff16565b905081819650965050505050505b9091565b600081600001519050919050565b60006156398383615c0d565b60001c905092915050565b600061566961566461565584616102565b856163c690919063ffffffff16565b6162d5565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156156f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180616c026026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6157bd616af4565b6040518060200160405280838152509050919050565b6157db616af4565b604051806020016040528069d3c21bcecceda1000000815250905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561589d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f302069732061207265736572766564206164647265737300000000000000000081525060200191505060405180910390fd5b60008214156158af57600190506159f2565b60006158d4600860010160405180602001604052908160008201548152505084615644565b90506158eb816006546159f890919063ffffffff16565b60068190555061594381600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546159f890919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150505b92915050565b600080828401905083811015615a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f467265657a6572000000000000000000000000000000000000000000000000008152506007019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015615b3b57600080fd5b505afa158015615b4f573d6000803e3d6000fd5b505050506040513d6020811015615b6557600080fd5b8101908080519060200190929190505050905090565b6000615bbd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250616825565b905092915050565b600080828481615bd157fe5b0490506000838581615bdf57fe5b061415615bef5780915050615c07565b615c036001826159f890919063ffffffff16565b9150505b92915050565b6000615c236020836159f890919063ffffffff16565b83511015615c99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f736c6963696e67206f7574206f662072616e676500000000000000000000000081525060200191505060405180910390fd5b60006020830184015190508091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415615ced5760009050615e13565b6000615d12600860010160405180602001604052908160008201548152505084615644565b9050615d6681600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546159f890919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3809150505b9392505050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415615ea9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180616f02602a913960400191505060405180910390fd5b6000615ece600860010160405180602001604052908160008201548152505084615644565b905080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015615f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180616df86029913960400191505060405180910390fd5b615fba81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615b7b90919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061604f81600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546159f890919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b61610a616af4565b6161126168e5565b82111561616a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180616ccf6036913960400191505060405180910390fd5b604051806020016040528069d3c21bcecceda100000084028152509050919050565b616194616af4565b60008260000151141561620f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f63616e277420646976696465206279203000000000000000000000000000000081525060200191505060405180910390fd5b600069d3c21bcecceda10000008460000151029050836000015169d3c21bcecceda1000000828161623c57fe5b04146162b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6f766572666c6f7720617420646976696465000000000000000000000000000081525060200191505060405180910390fd5b6040518060200160405280846000015183816162c857fe5b0481525091505092915050565b600069d3c21bcecceda10000008260000151816162ee57fe5b049050919050565b6000808314156163095760009050616376565b600082840290508284828161631a57fe5b0414616371576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180616dd76021913960400191505060405180910390fd5b809150505b92915050565b60006163be83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250616904565b905092915050565b6163ce616af4565b6000836000015114806163e5575060008260000151145b156164015760405180602001604052806000815250905061681f565b69d3c21bcecceda10000008260000151141561641f5782905061681f565b69d3c21bcecceda10000008360000151141561643d5781905061681f565b600069d3c21bcecceda1000000616453856169ca565b600001518161645e57fe5b049050600061646c85616a01565b600001519050600069d3c21bcecceda1000000616488866169ca565b600001518161649357fe5b04905060006164a186616a01565b600001519050600082850290506000851461653557828582816164c057fe5b0414616534576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f766572666c6f7720783179312064657465637465640000000000000000000081525060200191505060405180910390fd5b5b600069d3c21bcecceda100000082029050600082146165d75769d3c21bcecceda100000082828161656257fe5b04146165d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6f766572666c6f772078317931202a206669786564312064657465637465640081525060200191505060405180910390fd5b5b809150600084860290506000861461666857848682816165f357fe5b0414616667576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f766572666c6f7720783279312064657465637465640000000000000000000081525060200191505060405180910390fd5b5b60008488029050600088146166f6578488828161668157fe5b04146166f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f766572666c6f7720783179322064657465637465640000000000000000000081525060200191505060405180910390fd5b5b6166fe616a3e565b878161670657fe5b049650616711616a3e565b858161671957fe5b04945060008588029050600088146167aa578588828161673557fe5b04146167a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f766572666c6f7720783279322064657465637465640000000000000000000081525060200191505060405180910390fd5b5b6167b2616af4565b60405180602001604052808781525090506167db81604051806020016040528087815250616a4b565b90506167f581604051806020016040528086815250616a4b565b905061680f81604051806020016040528085815250616a4b565b9050809a50505050505050505050505b92915050565b60008383111582906168d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561689757808201518184015260208101905061687c565b50505050905090810190601f1680156168c45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60007601357c299a88ea76a58924d52ce4f26a85af186c2b9e74905090565b600080831182906169b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561697557808201518184015260208101905061695a565b50505050905090810190601f1680156169a25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816169bc57fe5b049050809150509392505050565b6169d2616af4565b604051806020016040528069d3c21bcecceda1000000808560000151816169f557fe5b04028152509050919050565b616a09616af4565b604051806020016040528069d3c21bcecceda100000080856000015181616a2c57fe5b04028460000151038152509050919050565b600064e8d4a51000905090565b616a53616af4565b6000826000015184600001510190508360000151811015616adc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f616464206f766572666c6f77206465746563746564000000000000000000000081525060200191505060405180910390fd5b60405180602001604052808281525091505092915050565b6040518060200160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10616b4857803560ff1916838001178555616b76565b82800160010185558215616b76579182015b82811115616b75578235825591602001919060010190616b5a565b5b509050616b839190616b87565b5090565b616ba991905b80821115616ba5576000816000905550600101616b8d565b5090565b9056fe6572726f722063616c6c696e67206e756d62657256616c696461746f7273496e53657420707265636f6d70696c65696e666c6174696f6e466163746f72557064617465506572696f64206d757374206265203e20304f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734d7573742070726f766964652061206e6f6e2d7a65726f20696e666c6174696f6e20726174654d7573742070726f766964652061206e6f6e2d7a65726f20696e666c6174696f6e20726174652e6572726f722063616c6c696e672067657456657269666965645365616c4269746d617046726f6d48656164657220707265636f6d70696c6563616e27742063616c6c207768656e20636f6e74726163742069732066726f7a656e63616e277420637265617465206669786964697479206e756d626572206c6172676572207468616e206d61784e6577466978656428296572726f722063616c6c696e672076616c696461746f725369676e65724164647265737346726f6d43757272656e7453657420707265636f6d70696c656572726f722063616c6c696e67206e756d62657256616c696461746f7273496e43757272656e7453657420707265636f6d70696c656572726f722063616c6c696e672076616c696461746f725369676e65724164647265737346726f6d53657420707265636f6d70696c6572657365727665642061646472657373203078302063616e6e6f74206861766520616c6c6f77616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777472616e736665722076616c75652065786365656465642062616c616e6365206f662073656e6465727472616e736665722076616c75652065786365656465642073656e646572277320616c6c6f77616e636520666f7220726563697069656e746572726f722063616c6c696e67206672616374696f6e4d756c45787020707265636f6d70696c656572726f722063616c6c696e672067657445706f636853697a6520707265636f6d70696c656572726f722063616c6c696e6720676574506172656e745365616c4269746d617020707265636f6d70696c656572726f722063616c6c696e6720676574426c6f636b4e756d62657246726f6d48656164657220707265636f6d70696c657472616e7366657220617474656d7074656420746f2072657365727665642061646472657373203078306572726f722063616c6c696e67206861736848656164657220707265636f6d70696c65a265627a7a72315820f881c1ef841ee1c797a12d2b1c9e74738f72704f6ac8ec7339c72ee42ba8f5fb64736f6c634300050d0032",
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061027f5760003560e01c806370a082311161015c578063a457c2d7116100ce578063df4da46111610087578063df4da461146112b1578063e1d6aceb146112cf578063e50e652d1461138a578063ec683072146113cc578063f2fde38b14611447578063fae8db0a1461148b5761027f565b8063a457c2d7146110b4578063a67f87471461111a578063a9059cbb1461114d578063a91ee0dc146111b3578063af31f587146111f7578063dd62ed3e146112395761027f565b80638a883626116101205780638a88362614610e965780638da5cb5b14610f655780638f32d59b14610faf57806395d89b4114610fd15780639a7b3be7146110545780639b2b592f146110725761027f565b806370a0823114610dae578063715018a614610e065780637385e5da14610e105780637b10399914610e2e57806387ee8a0f14610e785761027f565b806339509351116101f55780634b2c2f44116101b95780634b2c2f4414610a4a57806354255be014610b1957806358cf967214610b4c5780635d180adb14610b9a57806367960e9114610c125780636a30b25314610ce15761027f565b806339509351146108d85780633b1eb4bf1461093e57806340a12f641461098057806340c10f191461099e57806342966c6814610a045761027f565b806318160ddd1161024757806318160ddd1461043f5780631e4f0e031461045d578063222836ad1461066c57806323b872dd146106a457806323f0ab651461072a578063313ce567146108b45761027f565b806306fdde0314610284578063095ea7b314610307578063123633ea1461036d57806312c6c099146103db578063158ef93e1461041d575b600080fd5b61028c6114cd565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102cc5780820151818401526020810190506102b1565b50505050905090810190601f1680156102f95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103536004803603604081101561031d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061156f565b604051808215151515815260200191505060405180910390f35b6103996004803603602081101561038357600080fd5b8101908080359060200190929190505050611792565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610407600480360360208110156103f157600080fd5b81019080803590602001909291905050506118e3565b6040518082815260200191505060405180910390f35b61042561190c565b604051808215151515815260200191505060405180910390f35b61044761191f565b6040518082815260200191505060405180910390f35b61066a600480360361012081101561047457600080fd5b810190808035906020019064010000000081111561049157600080fd5b8201836020820111156104a357600080fd5b803590602001918460018302840111640100000000831117156104c557600080fd5b9091929391929390803590602001906401000000008111156104e657600080fd5b8201836020820111156104f857600080fd5b8035906020019184600183028401116401000000008311171561051a57600080fd5b9091929391929390803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561057c57600080fd5b82018360208201111561058e57600080fd5b803590602001918460208302840111640100000000831117156105b057600080fd5b9091929391929390803590602001906401000000008111156105d157600080fd5b8201836020820111156105e357600080fd5b8035906020019184602083028401116401000000008311171561060557600080fd5b90919293919293908035906020019064010000000081111561062657600080fd5b82018360208201111561063857600080fd5b8035906020019184600183028401116401000000008311171561065a57600080fd5b9091929391929390505050611931565b005b6106a26004803603604081101561068257600080fd5b810190808035906020019092919080359060200190929190505050611c57565b005b610710600480360360608110156106ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ebc565b604051808215151515815260200191505060405180910390f35b61089a6004803603606081101561074057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561077d57600080fd5b82018360208201111561078f57600080fd5b803590602001918460018302840111640100000000831117156107b157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561081457600080fd5b82018360208201111561082657600080fd5b8035906020019184600183028401116401000000008311171561084857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612542565b604051808215151515815260200191505060405180910390f35b6108bc6126fb565b604051808260ff1660ff16815260200191505060405180910390f35b610924600480360360408110156108ee57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612712565b604051808215151515815260200191505060405180910390f35b61096a6004803603602081101561095457600080fd5b81019080803590602001909291905050506129cf565b6040518082815260200191505060405180910390f35b6109886129e9565b6040518082815260200191505060405180910390f35b6109ea600480360360408110156109b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612a4f565b604051808215151515815260200191505060405180910390f35b610a3060048036036020811015610a1a57600080fd5b8101908080359060200190929190505050612eb5565b604051808215151515815260200191505060405180910390f35b610b0360048036036020811015610a6057600080fd5b8101908080359060200190640100000000811115610a7d57600080fd5b820183602082011115610a8f57600080fd5b80359060200191846001830284011164010000000083111715610ab157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506133dc565b6040518082815260200191505060405180910390f35b610b21613570565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b610b9860048036036040811015610b6257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613598565b005b610bd060048036036040811015610bb057600080fd5b8101908080359060200190929190803590602001909291905050506138d6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610ccb60048036036020811015610c2857600080fd5b8101908080359060200190640100000000811115610c4557600080fd5b820183602082011115610c5757600080fd5b80359060200191846001830284011164010000000083111715610c7957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050613a28565b6040518082815260200191505060405180910390f35b610dac6004803603610100811015610cf857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050613bbc565b005b610df060048036036020811015610dc457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613eb2565b6040518082815260200191505060405180910390f35b610e0e613f03565b005b610e1861403c565b6040518082815260200191505060405180910390f35b610e3661404c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610e80614072565b6040518082815260200191505060405180910390f35b610f4f60048036036020811015610eac57600080fd5b8101908080359060200190640100000000811115610ec957600080fd5b820183602082011115610edb57600080fd5b80359060200191846001830284011164010000000083111715610efd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506141b9565b6040518082815260200191505060405180910390f35b610f6d61434d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610fb7614376565b604051808215151515815260200191505060405180910390f35b610fd96143d4565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611019578082015181840152602081019050610ffe565b50505050905090810190601f1680156110465780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61105c614476565b6040518082815260200191505060405180910390f35b61109e6004803603602081101561108857600080fd5b8101908080359060200190929190505050614486565b6040518082815260200191505060405180910390f35b611100600480360360408110156110ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506145cf565b604051808215151515815260200191505060405180910390f35b611122614806565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b6111996004803603604081101561116357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061486a565b604051808215151515815260200191505060405180910390f35b6111f5600480360360208110156111c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614a3e565b005b6112236004803603602081101561120d57600080fd5b8101908080359060200190929190505050614be2565b6040518082815260200191505060405180910390f35b61129b6004803603604081101561124f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050614c24565b6040518082815260200191505060405180910390f35b6112b9614cab565b6040518082815260200191505060405180910390f35b611370600480360360608110156112e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561132c57600080fd5b82018360208201111561133e57600080fd5b8035906020019184600183028401116401000000008311171561136057600080fd5b9091929391929390505050614de7565b604051808215151515815260200191505060405180910390f35b6113b6600480360360208110156113a057600080fd5b8101908080359060200190929190505050615026565b6040518082815260200191505060405180910390f35b61142a600480360360c08110156113e257600080fd5b81019080803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050615071565b604051808381526020018281526020019250505060405180910390f35b6114896004803603602081101561145d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050615285565b005b6114b7600480360360208110156114a157600080fd5b810190808035906020019092919050505061530b565b6040518082815260200191505060405180910390f35b606060028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115655780601f1061153a57610100808354040283529160200191611565565b820191906000526020600020905b81548152906001019060200180831161154857829003601f168201915b5050505050905090565b6000611579616af4565b6000611583615454565b8092508193505050600860030154811461161a5781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a976115f7600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156116a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180616dad602a913960400191505060405180910390fd5b83600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925866040518082815260200191505060405180910390a360019250505092915050565b60006060600060fa73ffffffffffffffffffffffffffffffffffffffff16844360405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061180b57805182526020820191506020810190506020830392506117e8565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461186b576040519150601f19603f3d011682016040523d82523d6000602084013e611870565b606091505b508093508192505050806118cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180616d05603d913960400191505060405180910390fd5b6118da82600061562d565b92505050919050565b60006118ed616af4565b6118f5615454565b50809150506119048184615644565b915050919050565b600060149054906101000a900460ff1681565b600061192c600654614be2565b905090565b600060149054906101000a900460ff16156119b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f636f6e747261637420616c726561647920696e697469616c697a65640000000081525060200191505060405180910390fd5b6001600060146101000a81548160ff0219169083151502179055506000881415611a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180616c286026913960400191505060405180910390fd5b60008711611a82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180616bdb6027913960400191505060405180910390fd5b611a8b33615671565b60006006819055508d8d60029190611aa4929190616b07565b508b8b60039190611ab6929190616b07565b5089600460006101000a81548160ff021916908360ff160217905550611adb886157b5565b600860000160008201518160000155905050611af56157d3565b6008600101600082015181600001559050508660086002018190555042600860030181905550838390508686905014611b96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4172726179206c656e677468206d69736d61746368000000000000000000000081525060200191505060405180910390fd5b60008090505b86869050811015611c0757611beb878783818110611bb657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16868684818110611bdf57fe5b905060200201356157f9565b50611c006001826159f890919063ffffffff16565b9050611b9c565b50611c1189614a3e565b818160405160200180838380828437808301925050509250505060405160208183030381529060405280519060200120600c819055505050505050505050505050505050565b611c5f614376565b611cd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611cd9616af4565b6000611ce3615454565b80925081935050506008600301548114611d7a5781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97611d57600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b6000841415611dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180616c4e6027913960400191505060405180910390fd5b60008311611e4a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f757064617465506572696f64206d757374206265203e2030000000000000000081525060200191505060405180910390fd5b611e53846157b5565b600860000160008201518160000155905050826008600201819055507fa0035d6667ffb7d387c86c7228141c4a877e8ed831b267ac928a2f5b651c155d84844260405180848152602001838152602001828152602001935050505060405180910390a150505050565b6000611ec6616af4565b6000611ed0615454565b80925081935050506008600301548114611f675781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97611f44600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b611f6f615a80565b73ffffffffffffffffffffffffffffffffffffffff1663e5839836306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611feb57600080fd5b505afa158015611fff573d6000803e3d6000fd5b505050506040513d602081101561201557600080fd5b81019080805190602001909291905050501561207c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180616cad6022913960400191505060405180910390fd5b60006120a1600860010160405180602001604052908160008201548152505086615644565b9050600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415612129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180616f02602a913960400191505060405180910390fd5b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156121c1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180616df86029913960400191505060405180910390fd5b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054851115612296576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180616e216038913960400191505060405180910390fd5b6122e881600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546159f890919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061237d81600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615b7b90919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061244f85600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615b7b90919063ffffffff16565b600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3600193505050509392505050565b60008060fb73ffffffffffffffffffffffffffffffffffffffff16858585604051602001808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140183805190602001908083835b602083106125cb57805182526020820191506020810190506020830392506125a8565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831061261c57805182526020820191506020810190506020830392506125f9565b6001836020036101000a03801982511681845116808217855250505050505090500193505050506040516020818303038152906040526040518082805190602001908083835b602083106126855780518252602082019150602081019050602083039250612662565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146126e5576040519150601f19603f3d011682016040523d82523d6000602084013e6126ea565b606091505b505080915050809150509392505050565b6000600460009054906101000a900460ff16905090565b600061271c616af4565b6000612726615454565b809250819350505060086003015481146127bd5781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a9761279a600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180616dad602a913960400191505060405180910390fd5b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006128d986836159f890919063ffffffff16565b905080600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3600194505050505092915050565b60006129e2826129dd614cab565b615bc5565b9050919050565b60008060001b600c541415612a465760405160200180807f45786368616e67650000000000000000000000000000000000000000000000008152506008019050604051602081830303815290604052805190602001209050612a4c565b600c5490505b90565b6000612a59616af4565b6000612a63615454565b80925081935050506008600301548114612afa5781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97612ad7600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed612b406129e9565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612b7457600080fd5b505afa158015612b88573d6000803e3d6000fd5b505050506040513d6020811015612b9e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612d065750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd92723360405160200180807f56616c696461746f727300000000000000000000000000000000000000000000815250600a019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612c9c57600080fd5b505afa158015612cb0573d6000803e3d6000fd5b505050506040513d6020811015612cc657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612e2f5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd92723360405160200180807f4772616e64614d656e746f000000000000000000000000000000000000000000815250600b019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612dc557600080fd5b505afa158015612dd9573d6000803e3d6000fd5b505050506040513d6020811015612def57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b612ea1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f53656e646572206e6f7420617574686f72697a656420746f206d696e7400000081525060200191505060405180910390fd5b612eab85856157f9565b9250505092915050565b6000612ebf616af4565b6000612ec9615454565b80925081935050506008600301548114612f605781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97612f3d600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed612fa66129e9565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015612fda57600080fd5b505afa158015612fee573d6000803e3d6000fd5b505050506040513d602081101561300457600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061316c5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd92723360405160200180807f4772616e64614d656e746f000000000000000000000000000000000000000000815250600b019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561310257600080fd5b505afa158015613116573d6000803e3d6000fd5b505050506040513d602081101561312c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6131de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f53656e646572206e6f7420617574686f72697a656420746f206275726e00000081525060200191505060405180910390fd5b6000613203600860010160405180602001604052908160008201548152505086615644565b9050600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111156132ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f76616c75652065786365656465642062616c616e6365206f662073656e64657281525060200191505060405180910390fd5b6132cf81600654615b7b90919063ffffffff16565b60068190555061332781600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615b7b90919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a360019350505050919050565b60006060600060f473ffffffffffffffffffffffffffffffffffffffff16846040516020018082805190602001908083835b60208310613431578051825260208201915060208101905060208303925061340e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106134985780518252602082019150602081019050602083039250613475565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146134f8576040519150601f19603f3d011682016040523d82523d6000602084013e6134fd565b606091505b5080935081925050508061355c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180616c756038913960400191505060405180910390fd5b613567826000615c0d565b92505050919050565b6000806000806001600260006001839350829250819150809050935093509350935090919293565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461363a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4f6e6c7920564d2063616e2063616c6c0000000000000000000000000000000081525060200191505060405180910390fd5b613642615a80565b73ffffffffffffffffffffffffffffffffffffffff1663e5839836306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156136be57600080fd5b505afa1580156136d2573d6000803e3d6000fd5b505050506040513d60208110156136e857600080fd5b81019080805190602001909291905050501561374f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180616cad6022913960400191505060405180910390fd5b613757616af4565b6000613761615454565b809250819350505060086003015481146137f85781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a976137d5600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b600061381d600860010160405180602001604052908160008201548152505085615644565b905061387181600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615b7b90919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138c981600654615b7b90919063ffffffff16565b6006819055505050505050565b60006060600060fa73ffffffffffffffffffffffffffffffffffffffff16858560405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061394f578051825260208201915060208101905060208303925061392c565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146139af576040519150601f19603f3d011682016040523d82523d6000602084013e6139b4565b606091505b50809350819250505080613a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180616d776036913960400191505060405180910390fd5b613a1e82600061562d565b9250505092915050565b60006060600060f673ffffffffffffffffffffffffffffffffffffffff16846040516020018082805190602001908083835b60208310613a7d5780518252602082019150602081019050602083039250613a5a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310613ae45780518252602082019150602081019050602083039250613ac1565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613b44576040519150601f19603f3d011682016040523d82523d6000602084013e613b49565b606091505b50809350819250505080613ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180616f2c6023913960400191505060405180910390fd5b613bb3826000615c0d565b92505050919050565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614613c5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4f6e6c7920564d2063616e2063616c6c0000000000000000000000000000000081525060200191505060405180910390fd5b613c66615a80565b73ffffffffffffffffffffffffffffffffffffffff1663e5839836306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613ce257600080fd5b505afa158015613cf6573d6000803e3d6000fd5b505050506040513d6020811015613d0c57600080fd5b810190808051906020019092919050505015613d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180616cad6022913960400191505060405180910390fd5b6000613d98600860010160405180602001604052908160008201548152505086615644565b9050613dec81600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546159f890919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e4c613e3d8a8885615cae565b826159f890919063ffffffff16565b9050613e6b613e5c8a8a87615cae565b826159f890919063ffffffff16565b9050613e8a613e7b8a8986615cae565b826159f890919063ffffffff16565b9050613ea1816006546159f890919063ffffffff16565b600681905550505050505050505050565b6000613efc600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054614be2565b9050919050565b613f0b614376565b613f7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061404743615026565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006060600060f973ffffffffffffffffffffffffffffffffffffffff1643604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b602083106140e357805182526020820191506020810190506020830392506140c0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114614143576040519150601f19603f3d011682016040523d82523d6000602084013e614148565b606091505b508093508192505050806141a7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526035815260200180616d426035913960400191505060405180910390fd5b6141b282600061562d565b9250505090565b60006060600060f773ffffffffffffffffffffffffffffffffffffffff16846040516020018082805190602001908083835b6020831061420e57805182526020820191506020810190506020830392506141eb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106142755780518252602082019150602081019050602083039250614252565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146142d5576040519150601f19603f3d011682016040523d82523d6000602084013e6142da565b606091505b50809350819250505080614339576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180616ed16031913960400191505060405180910390fd5b61434482600061562d565b92505050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166143b8615e1a565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561446c5780601f106144415761010080835404028352916020019161446c565b820191906000526020600020905b81548152906001019060200180831161444f57829003601f168201915b5050505050905090565b6000614481436129cf565b905090565b60006060600060f973ffffffffffffffffffffffffffffffffffffffff1684604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b602083106144f757805182526020820191506020810190506020830392506144d4565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114614557576040519150601f19603f3d011682016040523d82523d6000602084013e61455c565b606091505b508093508192505050806145bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180616bad602e913960400191505060405180910390fd5b6145c682600061562d565b92505050919050565b60006145d9616af4565b60006145e3615454565b8092508193505050600860030154811461467a5781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97614657600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006147108683615b7b90919063ffffffff16565b905080600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3600194505050505092915050565b60008060008061482e600860000160405180602001604052908160008201548152505061561f565b614850600860010160405180602001604052908160008201548152505061561f565b600860020154600860030154935093509350935090919293565b6000614874616af4565b600061487e615454565b809250819350505060086003015481146149155781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a976148f2600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b61491d615a80565b73ffffffffffffffffffffffffffffffffffffffff1663e5839836306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561499957600080fd5b505afa1580156149ad573d6000803e3d6000fd5b505050506040513d60208110156149c357600080fd5b810190808051906020019092919050505015614a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180616cad6022913960400191505060405180910390fd5b614a348585615e22565b9250505092915050565b614a46614376565b614ab8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614b5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f43616e6e6f7420726567697374657220746865206e756c6c206164647265737381525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f27fe5f0c1c3b1ed427cc63d0f05759ffdecf9aec9e18d31ef366fc8a6cb5dc3b60405160405180910390a250565b6000614bec616af4565b614bf4615454565b5080915050614c1c614c1782614c0986616102565b61618c90919063ffffffff16565b6162d5565b915050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006060600060f873ffffffffffffffffffffffffffffffffffffffff166040516020016040516020818303038152906040526040518082805190602001908083835b60208310614d115780518252602082019150602081019050602083039250614cee565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114614d71576040519150601f19603f3d011682016040523d82523d6000602084013e614d76565b606091505b50809350819250505080614dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180616e806025913960400191505060405180910390fd5b614de082600061562d565b9250505090565b6000614df1616af4565b6000614dfb615454565b80925081935050506008600301548114614e925781600860010160008201518160000155905050806008600301819055507f08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97614e6f600860010160405180602001604052908160008201548152505061561f565b600860030154604051808381526020018281526020019250505060405180910390a15b614e9a615a80565b73ffffffffffffffffffffffffffffffffffffffff1663e5839836306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015614f1657600080fd5b505afa158015614f2a573d6000803e3d6000fd5b505050506040513d6020811015614f4057600080fd5b810190808051906020019092919050505015614fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180616cad6022913960400191505060405180910390fd5b6000614fb3888861486a565b90507fe5d4e30fb8364e57bc4d662a07d0cf36f4c34552004c4c3624620a2c1d1c03dc868660405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a1809350505050949350505050565b600061506a600361505c600261504e600261504088614486565b6162f690919063ffffffff16565b6159f890919063ffffffff16565b61637c90919063ffffffff16565b9050919050565b60008060008714158015615086575060008514155b6150f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f612064656e6f6d696e61746f72206973207a65726f000000000000000000000081525060200191505060405180910390fd5b6000806000606060fc73ffffffffffffffffffffffffffffffffffffffff168c8c8c8c8c8c6040516020018087815260200186815260200185815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040526040518082805190602001908083835b60208310615192578051825260208201915060208101905060208303925061516f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146151f2576040519150601f19603f3d011682016040523d82523d6000602084013e6151f7565b606091505b50809250819350505081615256576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180616e596027913960400191505060405180910390fd5b61526181600061562d565b935061526e81602061562d565b925083839550955050505050965096945050505050565b61528d614376565b6152ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61530881615671565b50565b60006060600060f573ffffffffffffffffffffffffffffffffffffffff1684604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b6020831061537c5780518252602082019150602081019050602083039250615359565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146153dc576040519150601f19603f3d011682016040523d82523d6000602084013e6153e1565b606091505b50809350819250505080615440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180616ea5602c913960400191505060405180910390fd5b61544b826000615c0d565b92505050919050565b61545c616af4565b600061547b6008600201546008600301546159f890919063ffffffff16565b4210156154ae5760086001016008600301548160405180602001604052908160008201548152505091509150915061561b565b60008060006154e26008600201546154d460086003015442615b7b90919063ffffffff16565b61637c90919063ffffffff16565b9050615564615509600860010160405180602001604052908160008201548152505061561f565b6155196155146157d3565b61561f565b61553b600860000160405180602001604052908160008201548152505061561f565b61554b6155466157d3565b61561f565b85600460009054906101000a900460ff1660ff16615071565b8093508194505050600083148061557b5750600082145b156155af5760086001016008600301548160405180602001604052908160008201548152505091509450945050505061561b565b6155b7616af4565b6155da6155c3846157b5565b6155cc866157b5565b61618c90919063ffffffff16565b9050600061560d6155f9846008600201546162f690919063ffffffff16565b6008600301546159f890919063ffffffff16565b905081819650965050505050505b9091565b600081600001519050919050565b60006156398383615c0d565b60001c905092915050565b600061566961566461565584616102565b856163c690919063ffffffff16565b6162d5565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156156f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180616c026026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6157bd616af4565b6040518060200160405280838152509050919050565b6157db616af4565b604051806020016040528069d3c21bcecceda1000000815250905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561589d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f302069732061207265736572766564206164647265737300000000000000000081525060200191505060405180910390fd5b60008214156158af57600190506159f2565b60006158d4600860010160405180602001604052908160008201548152505084615644565b90506158eb816006546159f890919063ffffffff16565b60068190555061594381600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546159f890919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150505b92915050565b600080828401905083811015615a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dcf0aaed60405160200180807f467265657a6572000000000000000000000000000000000000000000000000008152506007019050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015615b3b57600080fd5b505afa158015615b4f573d6000803e3d6000fd5b505050506040513d6020811015615b6557600080fd5b8101908080519060200190929190505050905090565b6000615bbd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250616825565b905092915050565b600080828481615bd157fe5b0490506000838581615bdf57fe5b061415615bef5780915050615c07565b615c036001826159f890919063ffffffff16565b9150505b92915050565b6000615c236020836159f890919063ffffffff16565b83511015615c99576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f736c6963696e67206f7574206f662072616e676500000000000000000000000081525060200191505060405180910390fd5b60006020830184015190508091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415615ced5760009050615e13565b6000615d12600860010160405180602001604052908160008201548152505084615644565b9050615d6681600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546159f890919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3809150505b9392505050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415615ea9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180616f02602a913960400191505060405180910390fd5b6000615ece600860010160405180602001604052908160008201548152505084615644565b905080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015615f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180616df86029913960400191505060405180910390fd5b615fba81600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615b7b90919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061604f81600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546159f890919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b61610a616af4565b6161126168e5565b82111561616a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180616ccf6036913960400191505060405180910390fd5b604051806020016040528069d3c21bcecceda100000084028152509050919050565b616194616af4565b60008260000151141561620f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f63616e277420646976696465206279203000000000000000000000000000000081525060200191505060405180910390fd5b600069d3c21bcecceda10000008460000151029050836000015169d3c21bcecceda1000000828161623c57fe5b04146162b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f6f766572666c6f7720617420646976696465000000000000000000000000000081525060200191505060405180910390fd5b6040518060200160405280846000015183816162c857fe5b0481525091505092915050565b600069d3c21bcecceda10000008260000151816162ee57fe5b049050919050565b6000808314156163095760009050616376565b600082840290508284828161631a57fe5b0414616371576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180616dd76021913960400191505060405180910390fd5b809150505b92915050565b60006163be83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250616904565b905092915050565b6163ce616af4565b6000836000015114806163e5575060008260000151145b156164015760405180602001604052806000815250905061681f565b69d3c21bcecceda10000008260000151141561641f5782905061681f565b69d3c21bcecceda10000008360000151141561643d5781905061681f565b600069d3c21bcecceda1000000616453856169ca565b600001518161645e57fe5b049050600061646c85616a01565b600001519050600069d3c21bcecceda1000000616488866169ca565b600001518161649357fe5b04905060006164a186616a01565b600001519050600082850290506000851461653557828582816164c057fe5b0414616534576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f766572666c6f7720783179312064657465637465640000000000000000000081525060200191505060405180910390fd5b5b600069d3c21bcecceda100000082029050600082146165d75769d3c21bcecceda100000082828161656257fe5b04146165d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6f766572666c6f772078317931202a206669786564312064657465637465640081525060200191505060405180910390fd5b5b809150600084860290506000861461666857848682816165f357fe5b0414616667576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f766572666c6f7720783279312064657465637465640000000000000000000081525060200191505060405180910390fd5b5b60008488029050600088146166f6578488828161668157fe5b04146166f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f766572666c6f7720783179322064657465637465640000000000000000000081525060200191505060405180910390fd5b5b6166fe616a3e565b878161670657fe5b049650616711616a3e565b858161671957fe5b04945060008588029050600088146167aa578588828161673557fe5b04146167a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6f766572666c6f7720783279322064657465637465640000000000000000000081525060200191505060405180910390fd5b5b6167b2616af4565b60405180602001604052808781525090506167db81604051806020016040528087815250616a4b565b90506167f581604051806020016040528086815250616a4b565b905061680f81604051806020016040528085815250616a4b565b9050809a50505050505050505050505b92915050565b60008383111582906168d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561689757808201518184015260208101905061687c565b50505050905090810190601f1680156168c45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60007601357c299a88ea76a58924d52ce4f26a85af186c2b9e74905090565b600080831182906169b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561697557808201518184015260208101905061695a565b50505050905090810190601f1680156169a25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816169bc57fe5b049050809150509392505050565b6169d2616af4565b604051806020016040528069d3c21bcecceda1000000808560000151816169f557fe5b04028152509050919050565b616a09616af4565b604051806020016040528069d3c21bcecceda100000080856000015181616a2c57fe5b04028460000151038152509050919050565b600064e8d4a51000905090565b616a53616af4565b6000826000015184600001510190508360000151811015616adc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f616464206f766572666c6f77206465746563746564000000000000000000000081525060200191505060405180910390fd5b60405180602001604052808281525091505092915050565b6040518060200160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10616b4857803560ff1916838001178555616b76565b82800160010185558215616b76579182015b82811115616b75578235825591602001919060010190616b5a565b5b509050616b839190616b87565b5090565b616ba991905b80821115616ba5576000816000905550600101616b8d565b5090565b9056fe6572726f722063616c6c696e67206e756d62657256616c696461746f7273496e53657420707265636f6d70696c65696e666c6174696f6e466163746f72557064617465506572696f64206d757374206265203e20304f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734d7573742070726f766964652061206e6f6e2d7a65726f20696e666c6174696f6e20726174654d7573742070726f766964652061206e6f6e2d7a65726f20696e666c6174696f6e20726174652e6572726f722063616c6c696e672067657456657269666965645365616c4269746d617046726f6d48656164657220707265636f6d70696c6563616e27742063616c6c207768656e20636f6e74726163742069732066726f7a656e63616e277420637265617465206669786964697479206e756d626572206c6172676572207468616e206d61784e6577466978656428296572726f722063616c6c696e672076616c696461746f725369676e65724164647265737346726f6d43757272656e7453657420707265636f6d70696c656572726f722063616c6c696e67206e756d62657256616c696461746f7273496e43757272656e7453657420707265636f6d70696c656572726f722063616c6c696e672076616c696461746f725369676e65724164647265737346726f6d53657420707265636f6d70696c6572657365727665642061646472657373203078302063616e6e6f74206861766520616c6c6f77616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f777472616e736665722076616c75652065786365656465642062616c616e6365206f662073656e6465727472616e736665722076616c75652065786365656465642073656e646572277320616c6c6f77616e636520666f7220726563697069656e746572726f722063616c6c696e67206672616374696f6e4d756c45787020707265636f6d70696c656572726f722063616c6c696e672067657445706f636853697a6520707265636f6d70696c656572726f722063616c6c696e6720676574506172656e745365616c4269746d617020707265636f6d70696c656572726f722063616c6c696e6720676574426c6f636b4e756d62657246726f6d48656164657220707265636f6d70696c657472616e7366657220617474656d7074656420746f2072657365727665642061646472657373203078306572726f722063616c6c696e67206861736848656164657220707265636f6d70696c65a265627a7a72315820f881c1ef841ee1c797a12d2b1c9e74738f72704f6ac8ec7339c72ee42ba8f5fb64736f6c634300050d0032",
+ "sourceMap": "695:20782:137:-;;;3526:52;8:9:-1;5:2;;;30:1;27;20:12;5:2;3526:52:137;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3526:52:137;;;;;;;;;;;;;;;;3570:4;698:17:163;718:12;:10;;;:12;;:::i;:::-;698:32;;749:9;740:6;;:18;;;;;;;;;;;;;;;;;;806:9;773:43;;802:1;773:43;;;;;;;;;;;;664:159;135:17:12;130:57;;176:4;162:11;;:18;;;;;;;;;;;;;;;;;;130:57;81:110;3526:52:137;695:20782;;788:96:159;833:15;867:10;860:17;;788:96;:::o;695:20782:137:-;;;;;;;",
+ "deployedSourceMap": "695:20782:137:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;695:20782:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11567:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;11567:77:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7790:288;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7790:288:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3769:367:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3769:367:22;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13774:250:137;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13774:250:137;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;53:23:12;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12875:99:137;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4278:1275;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4278:1275:137;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4278:1275:137;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4278:1275:137;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4278:1275:137;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4278:1275:137;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4278:1275:137;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4278:1275:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4278:1275:137;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4278:1275:137;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;4278:1275:137;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4278:1275:137;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4278:1275:137;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;4278:1275:137;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4278:1275:137;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4278:1275:137;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4278:1275:137;;;;;;;;;;;;:::i;:::-;;5702:491;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5702:491:137;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10790:718;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10790:718:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6264:266:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6264:266:22;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6264:266:22;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6264:266:22;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6264:266:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6264:266:22;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6264:266:22;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6264:266:22;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6264:266:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6264:266:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11879:77:137;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6473:415;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6473:415:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2608:147:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2608:147:22;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14610:199:137;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8257:399;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8257:399:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9870:602;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9870:602:137;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8414:343:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8414:343:22;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;8414:343:22;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8414:343:22;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8414:343:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;8414:343:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3260:117:137;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19507:287;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19507:287:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4440:378:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4440:378:22;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7106:288;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7106:288:22;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7106:288:22;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7106:288:22;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7106:288:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;7106:288:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20540:624:137;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;20540:624:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12605:127;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12605:127:137;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1684:137:163;;;:::i;:::-;;9949:112:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2540:25:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4955:326:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6659:329;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6659:329:22;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6659:329:22;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6659:329:22;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6659:329:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6659:329:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;899:77:163;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1250:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11705:81:137;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;11705:81:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2856:109:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5497:321;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5497:321:22;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7168:333:137;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7168:333:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;13125:266;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18113:163;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18113:163:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3089:230:23;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3089:230:23;;;;;;;;;;;;;;;;;;;:::i;:::-;;15052:663:137;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15052:663:137;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12238:138;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12238:138:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2178:266:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9471:267:137;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9471:267:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9471:267:137;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9471:267:137;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9471:267:137;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9670:147:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9670:147:22;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1297:763;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1297:763:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1970:107:163;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1970:107:163;;;;;;;;;;;;;;;;;;;:::i;:::-;;7685:322:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7685:322:22;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11567:77:137;11606:13;11634:5;11627:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11567:77;:::o;7790:288::-;7879:4;2547:50;;:::i;:::-;2603:19;2669:27;:25;:27::i;:::-;2629:67;;;;;;;;2722:14;:32;;;2707:11;:47;2703:269;;2788:22;2764:14;:21;;:46;;;;;;;;;;;2853:11;2818:14;:32;;:46;;;;2877:88;2900:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;2932:14;:32;;;2877:88;;;;;;;;;;;;;;;;;;;;;;;;2703:269;7918:1;7899:21;;:7;:21;;;;7891:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8004:5;7973:7;:19;7981:10;7973:19;;;;;;;;;;;;;;;:28;7993:7;7973:28;;;;;;;;;;;;;;;:36;;;;8041:7;8020:36;;8029:10;8020:36;;;8050:5;8020:36;;;;;;;;;;;;;;;;;;8069:4;8062:11;;7790:288;;;;;;:::o;3769:367:22:-;3851:7;3866:16;3888:12;409:8;3923:24;;3965:5;3980:12;3948:46;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3948:46:22;;;3923:72;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3923:72:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3906:89:22;;;;;;;;4009:7;4001:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4103:27;4123:3;4128:1;4103:19;:27::i;:::-;4088:43;;;;3769:367;;;:::o;13774:250:137:-;13834:7;13849:50;;:::i;:::-;13935:27;:25;:27::i;:::-;13906:56;;;;;13975:44;13989:22;14013:5;13975:13;:44::i;:::-;13968:51;;;13774:250;;;:::o;53:23:12:-;;;;;;;;;;;;;:::o;12875:99:137:-;12921:7;12943:26;12956:12;;12943;:26::i;:::-;12936:33;;12875:99;:::o;4278:1275::-;233:11:12;;;;;;;;;;;232:12;224:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;297:4;283:11;;:18;;;;;;;;;;;;;;;;;;4661:1:137;4644:13;:18;;4636:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4749:1;4719:27;:31;4711:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4801:30;4820:10;4801:18;:30::i;:::-;4853:1;4838:12;:16;;;;4868:5;;4860;:13;;;;;;;:::i;:::-;;4889:7;;4879;:17;;;;;;;:::i;:::-;;4914:9;4902;;:21;;;;;;;;;;;;;;;;;;4952:31;4969:13;4952:16;:31::i;:::-;4930:14;:19;;:53;;;;;;;;;;;5013:20;:18;:20::i;:::-;4989:14;:21;;:44;;;;;;;;;;;5069:27;5039:14;:27;;:57;;;;5187:3;5152:14;:32;;:38;;;;5239:20;;:27;;5205:23;;:30;;:61;5197:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5303:9;5315:1;5303:13;;5298:143;5322:23;;:30;;5318:1;:34;5298:143;;;5376:58;5382:23;;5406:1;5382:26;;;;;;;;;;;;;;;5410:20;;5431:1;5410:23;;;;;;;;;;;;;5376:5;:58::i;:::-;;5358:8;5364:1;5358;:5;;:8;;;;:::i;:::-;5354:12;;5298:143;;;;5446:28;5458:15;5446:11;:28::i;:::-;5528:18;;5511:36;;;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;5511:36:137;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5511:36:137;;;5501:47;;;;;;5480:18;:68;;;;4278:1275;;;;;;;;;;;;;;:::o;5702:491::-;1103:9:163;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2547:50:137;;:::i;:::-;2603:19;2669:27;:25;:27::i;:::-;2629:67;;;;;;;;2722:14;:32;;;2707:11;:47;2703:269;;2788:22;2764:14;:21;;:46;;;;;;;;;;;2853:11;2818:14;:32;;:46;;;;2877:88;2900:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;2932:14;:32;;;2877:88;;;;;;;;;;;;;;;;;;;;;;;;2703:269;5847:1;5839:4;:9;;5831:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5921:1;5906:12;:16;5898:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5979:22;5996:4;5979:16;:22::i;:::-;5957:14;:19;;:44;;;;;;;;;;;6037:12;6007:14;:27;;:42;;;;6061:127;6095:4;6107:12;6179:3;6061:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1159:1:163;;5702:491:137;;:::o;10790:718::-;10927:4;2547:50;;:::i;:::-;2603:19;2669:27;:25;:27::i;:::-;2629:67;;;;;;;;2722:14;:32;;;2707:11;:47;2703:269;;2788:22;2764:14;:21;;:46;;;;;;;;;;;2853:11;2818:14;:32;;:46;;;;2877:88;2900:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;2932:14;:32;;;2877:88;;;;;;;;;;;;;;;;;;;;;;;;2703:269;250:12:8;:10;:12::i;:::-;:21;;;280:4;250:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;250:36:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;250:36:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;250:36:8;;;;;;;;;;;;;;;;249:37;241:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10941:13:137;10957:43;10971:14;:21;;10957:43;;;;;;;;;;;;;;;;;10994:5;10957:13;:43::i;:::-;10941:59;;11028:1;11014:16;;:2;:16;;;;11006:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11100:8;:14;11109:4;11100:14;;;;;;;;;;;;;;;;11091:5;:23;;11083:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11190:7;:13;11198:4;11190:13;;;;;;;;;;;;;;;:25;11204:10;11190:25;;;;;;;;;;;;;;;;11181:5;:34;;11166:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11309:23;11326:5;11309:8;:12;11318:2;11309:12;;;;;;;;;;;;;;;;:16;;:23;;;;:::i;:::-;11294:8;:12;11303:2;11294:12;;;;;;;;;;;;;;;:38;;;;11355:25;11374:5;11355:8;:14;11364:4;11355:14;;;;;;;;;;;;;;;;:18;;:25;;;;:::i;:::-;11338:8;:14;11347:4;11338:14;;;;;;;;;;;;;;;:42;;;;11414:36;11444:5;11414:7;:13;11422:4;11414:13;;;;;;;;;;;;;;;:25;11428:10;11414:25;;;;;;;;;;;;;;;;:29;;:36;;;;:::i;:::-;11386:7;:13;11394:4;11386:13;;;;;;;;;;;;;;;:25;11400:10;11386:25;;;;;;;;;;;;;;;:64;;;;11476:2;11461:25;;11470:4;11461:25;;;11480:5;11461:25;;;;;;;;;;;;;;;;;;11499:4;11492:11;;;10790:718;;;;;;;:::o;6264:266:22:-;6387:4;6401:12;355:8;6433:30;;6481:6;6489;6497;6464:40;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6464:40:22;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6464:40:22;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6464:40:22;;;6433:72;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6433:72:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;6419:86:22;;;;;6518:7;6511:14;;;6264:266;;;;;:::o;11879:77:137:-;11922:5;11942:9;;;;;;;;;;;11935:16;;11879:77;:::o;6473:415::-;6584:4;2547:50;;:::i;:::-;2603:19;2669:27;:25;:27::i;:::-;2629:67;;;;;;;;2722:14;:32;;;2707:11;:47;2703:269;;2788:22;2764:14;:21;;:46;;;;;;;;;;;2853:11;2818:14;:32;;:46;;;;2877:88;2900:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;2932:14;:32;;;2877:88;;;;;;;;;;;;;;;;;;;;;;;;2703:269;6625:1;6606:21;;:7;:21;;;;6598:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6680:16;6699:7;:19;6707:10;6699:19;;;;;;;;;;;;;;;:28;6719:7;6699:28;;;;;;;;;;;;;;;;6680:47;;6733:16;6752:19;6765:5;6752:8;:12;;:19;;;;:::i;:::-;6733:38;;6808:8;6777:7;:19;6785:10;6777:19;;;;;;;;;;;;;;;:28;6797:7;6777:28;;;;;;;;;;;;;;;:39;;;;6848:7;6827:39;;6836:10;6827:39;;;6857:8;6827:39;;;;;;;;;;;;;;;;;;6879:4;6872:11;;;;6473:415;;;;;;:::o;2608:147:22:-;2681:7;2703:47;2722:11;2735:14;:12;:14::i;:::-;2703:18;:47::i;:::-;2696:54;;2608:147;;;:::o;14610:199:137:-;14664:7;14713:1;14705:10;;14683:18;;:32;14679:126;;;1469:28:23;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1469:28:23;;;1459:39;;;;;;14725:27:137;;;;14679:126;14780:18;;14773:25;;14610:199;;:::o;8257:399::-;8338:4;2547:50;;:::i;:::-;2603:19;2669:27;:25;:27::i;:::-;2629:67;;;;;;;;2722:14;:32;;;2707:11;:47;2703:269;;2788:22;2764:14;:21;;:46;;;;;;;;;;;2853:11;2818:14;:32;;:46;;;;2877:88;2900:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;2932:14;:32;;;2877:88;;;;;;;;;;;;;;;;;;;;;;;;2703:269;8379:8;;;;;;;;;;;:27;;;8407:23;:21;:23::i;:::-;8379:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8379:52:137;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8379:52:137;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8379:52:137;;;;;;;;;;;;;;;;8365:66;;:10;:66;;;:138;;;;8457:8;;;;;;;;;;;:22;;;2467:30:23;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2467:30:23;;;2457:41;;;;;;8457:46:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8457:46:137;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8457:46:137;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8457:46:137;;;;;;;;;;;;;;;;8443:60;;:10;:60;;;8365:138;:212;;;;8529:8;;;;;;;;;;;:22;;;1293:31;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1293:31:137;;;1283:42;;;;;;8529:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8529:48:137;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8529:48:137;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8529:48:137;;;;;;;;;;;;;;;;8515:62;;:10;:62;;;8365:212;8350:272;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8635:16;8641:2;8645:5;8635;:16::i;:::-;8628:23;;8257:399;;;;;;:::o;9870:602::-;9939:4;2547:50;;:::i;:::-;2603:19;2669:27;:25;:27::i;:::-;2629:67;;;;;;;;2722:14;:32;;;2707:11;:47;2703:269;;2788:22;2764:14;:21;;:46;;;;;;;;;;;2853:11;2818:14;:32;;:46;;;;2877:88;2900:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;2932:14;:32;;;2877:88;;;;;;;;;;;;;;;;;;;;;;;;2703:269;9980:8;;;;;;;;;;;:27;;;10008:23;:21;:23::i;:::-;9980:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9980:52:137;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9980:52:137;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9980:52:137;;;;;;;;;;;;;;;;9966:66;;:10;:66;;;:140;;;;10058:8;;;;;;;;;;;:22;;;1293:31;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1293:31:137;;;1283:42;;;;;;10058:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10058:48:137;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10058:48:137;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10058:48:137;;;;;;;;;;;;;;;;10044:62;;:10;:62;;;9966:140;9951:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10157:13;10173:43;10187:14;:21;;10173:43;;;;;;;;;;;;;;;;;10210:5;10173:13;:43::i;:::-;10157:59;;10239:8;:20;10248:10;10239:20;;;;;;;;;;;;;;;;10230:5;:29;;10222:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10317:23;10334:5;10317:12;;:16;;:23;;;;:::i;:::-;10302:12;:38;;;;10369:31;10394:5;10369:8;:20;10378:10;10369:20;;;;;;;;;;;;;;;;:24;;:31;;;;:::i;:::-;10346:8;:20;10355:10;10346:20;;;;;;;;;;;;;;;:54;;;;10440:1;10411:39;;10420:10;10411:39;;;10444:5;10411:39;;;;;;;;;;;;;;;;;;10463:4;10456:11;;;9870:602;;;;;:::o;8414:343:22:-;8497:7;8512:16;8534:12;764:9;8569:35;;8622:6;8605:24;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8605:24:22;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8605:24:22;;;8569:61;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8569:61:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;8552:78:22;;;;;;;;8644:7;8636:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8725:27;8745:3;8750:1;8725:19;:27::i;:::-;8718:34;;;;8414:343;;;:::o;3260:117:137:-;3311:7;3320;3329;3338;3361:1;3364;3367;3370;3353:19;;;;;;;;;;;;;;;;;;;;3260:117;;;;:::o;19507:287::-;104:1:2;82:24;;:10;:24;;;74:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:12:8;:10;:12::i;:::-;:21;;;280:4;250:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;250:36:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;250:36:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;250:36:8;;;;;;;;;;;;;;;;249:37;241:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2547:50:137;;:::i;:::-;2603:19;2669:27;:25;:27::i;:::-;2629:67;;;;;;;;2722:14;:32;;;2707:11;:47;2703:269;;2788:22;2764:14;:21;;:46;;;;;;;;;;;2853:11;2818:14;:32;;:46;;;;2877:88;2900:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;2932:14;:32;;;2877:88;;;;;;;;;;;;;;;;;;;;;;;;2703:269;19638:13;19654:43;19668:14;:21;;19654:43;;;;;;;;;;;;;;;;;19691:5;19654:13;:43::i;:::-;19638:59;;19720:25;19739:5;19720:8;:14;19729:4;19720:14;;;;;;;;;;;;;;;;:18;;:25;;;;:::i;:::-;19703:8;:14;19712:4;19703:14;;;;;;;;;;;;;;;:42;;;;19766:23;19783:5;19766:12;;:16;;:23;;;;:::i;:::-;19751:12;:38;;;;2977:1;331::8;;19507:287:137;;:::o;4440:378:22:-;4548:7;4565:16;4587:12;409:8;4622:24;;4664:5;4671:11;4647:36;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4647:36:22;;;4622:62;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4622:62:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4605:79:22;;;;;;;;4698:7;4690:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4785:27;4805:3;4810:1;4785:19;:27::i;:::-;4770:43;;;;4440:378;;;;:::o;7106:288::-;7168:7;7183:16;7205:12;635:8;7240:22;;7280:6;7263:24;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7263:24:22;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7263:24:22;;;7240:48;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7240:48:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;7223:65:22;;;;;;;;7302:7;7294:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7362:27;7382:3;7387:1;7362:19;:27::i;:::-;7355:34;;;;7106:288;;;:::o;20540:624:137:-;104:1:2;82:24;;:10;:24;;;74:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:12:8;:10;:12::i;:::-;:21;;;280:4;250:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;250:36:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;250:36:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;250:36:8;;;;;;;;;;;;;;;;249:37;241:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20800:13:137;20816:44;20830:14;:21;;20816:44;;;;;;;;;;;;;;;;;20853:6;20816:13;:44::i;:::-;20800:60;;20883:25;20902:5;20883:8;:14;20892:4;20883:14;;;;;;;;;;;;;;;;:18;;:25;;;;:::i;:::-;20866:8;:14;20875:4;20866:14;;;;;;;;;;;;;;;:42;;;;20923:53;20933:42;20944:4;20950:13;20965:9;20933:10;:42::i;:::-;20923:5;:9;;:53;;;;:::i;:::-;20915:61;;20990:51;21000:40;21011:4;21017:12;21031:8;21000:10;:40::i;:::-;20990:5;:9;;:51;;;;:::i;:::-;20982:59;;21055:60;21065:49;21076:4;21082:19;21103:10;21065;:49::i;:::-;21055:5;:9;;:60;;;;:::i;:::-;21047:68;;21136:23;21153:5;21136:12;;:16;;:23;;;;:::i;:::-;21121:12;:38;;;;331:1:8;20540:624:137;;;;;;;;:::o;12605:127::-;12669:7;12691:36;12704:8;:22;12713:12;12704:22;;;;;;;;;;;;;;;;12691:12;:36::i;:::-;12684:43;;12605:127;;;:::o;1684:137:163:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:1;1745:40;;1766:6;;;;;;;;;;;1745:40;;;;;;;;;;;;1812:1;1795:6;;:19;;;;;;;;;;;;;;;;;;1684:137::o;9949:112:22:-;10007:7;10029:27;10043:12;10029:13;:27::i;:::-;10022:34;;9949:112;:::o;2540:25:23:-;;;;;;;;;;;;;:::o;4955:326:22:-;5016:7;5031:16;5053:12;467:8;5088:28;;5142:12;5117:39;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5117:39:22;;;5088:69;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5088:69:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;5071:86:22;;;;;;;;5171:7;5163:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5249:27;5269:3;5274:1;5249:19;:27::i;:::-;5242:34;;;;4955:326;:::o;6659:329::-;6735:7;6750:16;6772:12;583:8;6807:35;;6860:6;6843:24;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6843:24:22;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6843:24:22;;;6807:61;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6807:61:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;6790:78:22;;;;;;;;6882:7;6874:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6956:27;6976:3;6981:1;6956:19;:27::i;:::-;6949:34;;;;6659:329;;;:::o;899:77:163:-;937:7;963:6;;;;;;;;;;;956:13;;899:77;:::o;1250:92::-;1290:4;1329:6;;;;;;;;;;;1313:22;;:12;:10;:12::i;:::-;:22;;;1306:29;;1250:92;:::o;11705:81:137:-;11746:13;11774:7;11767:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11705:81;:::o;2856:109:22:-;2903:7;2925:35;2947:12;2925:21;:35::i;:::-;2918:42;;2856:109;:::o;5497:321::-;5570:7;5585:16;5607:12;467:8;5642:28;;5688:11;5671:29;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5671:29:22;;;5642:59;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5642:59:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;5625:76:22;;;;;;;;5715:7;5707:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5786:27;5806:3;5811:1;5786:19;:27::i;:::-;5779:34;;;;5497:321;;;:::o;7168:333:137:-;7279:4;2547:50;;:::i;:::-;2603:19;2669:27;:25;:27::i;:::-;2629:67;;;;;;;;2722:14;:32;;;2707:11;:47;2703:269;;2788:22;2764:14;:21;;:46;;;;;;;;;;;2853:11;2818:14;:32;;:46;;;;2877:88;2900:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;2932:14;:32;;;2877:88;;;;;;;;;;;;;;;;;;;;;;;;2703:269;7293:16;7312:7;:19;7320:10;7312:19;;;;;;;;;;;;;;;:28;7332:7;7312:28;;;;;;;;;;;;;;;;7293:47;;7346:16;7365:19;7378:5;7365:8;:12;;:19;;;;:::i;:::-;7346:38;;7421:8;7390:7;:19;7398:10;7390:19;;;;;;;;;;;;;;;:28;7410:7;7390:28;;;;;;;;;;;;;;;:39;;;;7461:7;7440:39;;7449:10;7440:39;;;7470:8;7440:39;;;;;;;;;;;;;;;;;;7492:4;7485:11;;;;7168:333;;;;;;:::o;13125:266::-;13182:7;13191;13200;13209;13239:28;:14;:19;;:26;;;;;;;;;;;;;;;;;;:28::i;:::-;13275:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;13313:14;:27;;;13348:14;:32;;;13224:162;;;;;;;;13125:266;;;;:::o;18113:163::-;18230:4;2547:50;;:::i;:::-;2603:19;2669:27;:25;:27::i;:::-;2629:67;;;;;;;;2722:14;:32;;;2707:11;:47;2703:269;;2788:22;2764:14;:21;;:46;;;;;;;;;;;2853:11;2818:14;:32;;:46;;;;2877:88;2900:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;2932:14;:32;;;2877:88;;;;;;;;;;;;;;;;;;;;;;;;2703:269;250:12:8;:10;:12::i;:::-;:21;;;280:4;250:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;250:36:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;250:36:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;250:36:8;;;;;;;;;;;;;;;;249:37;241:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18251:20:137;18261:2;18265:5;18251:9;:20::i;:::-;18244:27;;18113:163;;;;;;:::o;3089:230:23:-;1103:9:163;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3193:1:23;3166:29;;:15;:29;;;;3158:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3259:15;3238:8;;:37;;;;;;;;;;;;;;;;;;3298:15;3286:28;;;;;;;;;;;;3089:230;:::o;15052:663:137:-;15110:7;15125:50;;:::i;:::-;15211:27;:25;:27::i;:::-;15182:56;;;;;15640:70;:58;15675:22;15640:27;15661:5;15640:20;:27::i;:::-;:34;;:58;;;;:::i;:::-;:68;:70::i;:::-;15633:77;;;15052:663;;;:::o;12238:138::-;12319:7;12341;:21;12349:12;12341:21;;;;;;;;;;;;;;;:30;12363:7;12341:30;;;;;;;;;;;;;;;;12334:37;;12238:138;;;;:::o;2178:266:22:-;2223:7;2238:16;2260:12;518:8;2295:21;;2317:18;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2317:18:22;;;2295:41;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2295:41:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2278:58:22;;;;;;;;2350:7;2342:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2412:27;2432:3;2437:1;2412:19;:27::i;:::-;2405:34;;;;2178:266;:::o;9471:267:137:-;9626:4;2547:50;;:::i;:::-;2603:19;2669:27;:25;:27::i;:::-;2629:67;;;;;;;;2722:14;:32;;;2707:11;:47;2703:269;;2788:22;2764:14;:21;;:46;;;;;;;;;;;2853:11;2818:14;:32;;:46;;;;2877:88;2900:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;2932:14;:32;;;2877:88;;;;;;;;;;;;;;;;;;;;;;;;2703:269;250:12:8;:10;:12::i;:::-;:21;;;280:4;250:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;250:36:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;250:36:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;250:36:8;;;;;;;;;;;;;;;;249:37;241:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9640:14:137;9657:19;9666:2;9670:5;9657:8;:19::i;:::-;9640:36;;9687:24;9703:7;;9687:24;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9687:24:137;;;;;;;;;;;;;;9724:9;9717:16;;;9471:267;;;;;;;;:::o;9670:147:22:-;9735:7;9757:55;9810:1;9757:48;9803:1;9757:41;9796:1;9757:34;9779:11;9757:21;:34::i;:::-;:38;;:41;;;;:::i;:::-;:45;;:48;;;;:::i;:::-;:52;;:55;;;;:::i;:::-;9750:62;;9670:147;;;:::o;1297:763::-;1491:7;1500;1539:1;1523:12;:17;;:38;;;;;1560:1;1544:12;:17;;1523:38;1515:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1593:23;1622:25;1653:12;1671:16;295:8;1710:23;;1758:10;1770:12;1784:10;1796:12;1810:8;1820:9;1741:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1741:89:22;;;1710:126;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1710:126:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1693:143:22;;;;;;;;1850:7;1842:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1925:27;1945:3;1950:1;1925:19;:27::i;:::-;1907:45;;1978:28;1998:3;2003:2;1978:19;:28::i;:::-;1958:48;;2020:15;2037:17;2012:43;;;;;;;;1297:763;;;;;;;;;:::o;1970:107:163:-;1103:9;:7;:9::i;:::-;1095:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;7685:322:22:-;7756:7;7771:16;7793:12;698:9;7828:33;;7879:11;7862:29;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7862:29:22;;;7828:64;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7828:64:22;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;7811:81:22;;;;;;;;7906:7;7898:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7975:27;7995:3;8000:1;7975:19;:27::i;:::-;7968:34;;;;7685:322;;;:::o;16485:1407:137:-;16544:27;;:::i;:::-;16573:7;16641:65;16678:14;:27;;;16641:14;:32;;;:36;;:65;;;;:::i;:::-;16635:3;:71;16631:156;;;16724:14;:21;;16747:14;:32;;;16716:64;;;;;;;;;;;;;;;;;;;;;;;;;;16631:156;16793:17;16816:19;16914:29;16946:86;16999:14;:27;;;16946:41;16954:14;:32;;;16946:3;:7;;:41;;;;:::i;:::-;:45;;:86;;;;:::i;:::-;16914:118;;17066:214;17088:30;:14;:21;;:28;;;;;;;;;;;;;;;;;;:30::i;:::-;17126:29;:20;:18;:20::i;:::-;:27;:29::i;:::-;17163:28;:14;:19;;:26;;;;;;;;;;;;;;;;;;:28::i;:::-;17199:29;:20;:18;:20::i;:::-;:27;:29::i;:::-;17236:21;17265:9;;;;;;;;;;;17066:214;;:14;:214::i;:::-;17039:241;;;;;;;;17424:1;17411:9;:14;:34;;;;17444:1;17429:11;:16;17411:34;17407:119;;;17463:14;:21;;17486:14;:32;;;17455:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17407:119;17532:50;;:::i;:::-;17585:77;17627:29;17644:11;17627:16;:29::i;:::-;17585:27;17602:9;17585:16;:27::i;:::-;:34;;:77;;;;:::i;:::-;17532:130;;17668:19;17690:104;17734:54;17766:21;17734:14;:27;;;:31;;:54;;;;:::i;:::-;17690:14;:32;;;:36;;:104;;;;:::i;:::-;17668:126;;17809:22;17833:11;17801:44;;;;;;;;;16485:1407;;;:::o;1674:92:7:-;1732:7;1754:1;:7;;;1747:14;;1674:92;;;:::o;8917:150:22:-;9001:7;9031:30;9051:2;9055:5;9031:19;:30::i;:::-;9023:39;;9016:46;;8917:150;;;;:::o;16093:211:137:-;16210:7;16234:65;:53;16259:27;16280:5;16259:20;:27::i;:::-;16234:15;:24;;:53;;;;:::i;:::-;:63;:65::i;:::-;16227:72;;16093:211;;;;:::o;2178:225:163:-;2271:1;2251:22;;:8;:22;;;;2243:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2360:8;2331:38;;2352:6;;;;;;;;;;;2331:38;;;;;;;;;;;;2388:8;2379:6;;:17;;;;;;;;;;;;;;;;;;2178:225;:::o;1502:94:7:-;1550:15;;:::i;:::-;1580:11;;;;;;;;1589:1;1580:11;;;1573:18;;1502:94;;;:::o;1180:97::-;1221:15;;:::i;:::-;1251:21;;;;;;;;996:25;1251:21;;;1244:28;;1180:97;:::o;8835:388:137:-;8894:4;8928:1;8914:16;;:2;:16;;;;8906:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8977:1;8968:5;:10;8964:42;;;8995:4;8988:11;;;;8964:42;9012:13;9028:43;9042:14;:21;;9028:43;;;;;;;;;;;;;;;;;9065:5;9028:13;:43::i;:::-;9012:59;;9092:23;9109:5;9092:12;;:16;;:23;;;;:::i;:::-;9077:12;:38;;;;9136:23;9153:5;9136:8;:12;9145:2;9136:12;;;;;;;;;;;;;;;;:16;;:23;;;;:::i;:::-;9121:8;:12;9130:2;9121:12;;;;;;;;;;;;;;;:38;;;;9191:2;9170:31;;9187:1;9170:31;;;9195:5;9170:31;;;;;;;;;;;;;;;;;;9214:4;9207:11;;;8835:388;;;;;:::o;834:176:162:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;4092:131:23:-;4137:8;4169;;;;;;;;;;;:27;;;1668;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1668:27:23;;;1658:38;;;;;;4169:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4169:48:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4169:48:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4169:48:23;;;;;;;;;;;;;;;;4153:65;;4092:131;:::o;1274:134:162:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;3177:379:22:-;3280:7;3388:19;3424:9;3410:11;:23;;;;;;3388:45;;3470:1;3457:9;3443:11;:23;;;;;;:28;3439:113;;;3488:11;3481:18;;;;;3439:113;3527:18;3543:1;3527:11;:15;;:18;;;;:::i;:::-;3520:25;;;3177:379;;;;;:::o;9227:255::-;9311:7;9347:13;9357:2;9347:5;:9;;:13;;;;:::i;:::-;9334:2;:9;:26;;9326:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9391:9;9453:2;9446:5;9442:14;9438:2;9434:23;9428:30;9423:35;;9476:1;9469:8;;;9227:255;;;;:::o;21168:306:137:-;21247:7;21280:1;21266:16;;:2;:16;;;21262:45;;;21299:1;21292:8;;;;21262:45;21312:13;21328:43;21342:14;:21;;21328:43;;;;;;;;;;;;;;;;;21365:5;21328:13;:43::i;:::-;21312:59;;21392:23;21409:5;21392:8;:12;21401:2;21392:12;;;;;;;;;;;;;;;;:16;;:23;;;;:::i;:::-;21377:8;:12;21386:2;21377:12;;;;;;;;;;;;;;;:38;;;;21441:2;21426:25;;21435:4;21426:25;;;21445:5;21426:25;;;;;;;;;;;;;;;;;;21464:5;21457:12;;;21168:306;;;;;;:::o;788:96:159:-;833:15;867:10;860:17;;788:96;:::o;18473:469:137:-;18537:4;18571:1;18557:16;;:2;:16;;;;18549:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18626:13;18642:43;18656:14;:21;;18642:43;;;;;;;;;;;;;;;;;18679:5;18642:13;:43::i;:::-;18626:59;;18723:5;18699:8;:20;18708:10;18699:20;;;;;;;;;;;;;;;;:29;;18691:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18803:31;18828:5;18803:8;:20;18812:10;18803:20;;;;;;;;;;;;;;;;:24;;:31;;;;:::i;:::-;18780:8;:20;18789:10;18780:20;;;;;;;;;;;;;;;:54;;;;18855:23;18872:5;18855:8;:12;18864:2;18855:12;;;;;;;;;;;;;;;;:16;;:23;;;;:::i;:::-;18840:8;:12;18849:2;18840:12;;;;;;;;;;;;;;;:38;;;;18910:2;18889:31;;18898:10;18889:31;;;18914:5;18889:31;;;;;;;;;;;;;;;;;;18933:4;18926:11;;;18473:469;;;;:::o;2547:203:7:-;2599:15;;:::i;:::-;2635:13;:11;:13::i;:::-;2630:1;:18;;2622:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2720:25;;;;;;;;996;2729:1;:15;2720:25;;;2713:32;;2547:203;;;:::o;9180:283::-;9257:15;;:::i;:::-;9299:1;9288;:7;;;:12;;9280:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9328:9;996:25;9340:1;:7;;;:21;9328:33;;9394:1;:7;;;996:25;9375:1;:15;;;;;;:26;9367:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9437:21;;;;;;;;9450:1;:7;;;9446:1;:11;;;;;;9437:21;;;9430:28;;;9180:283;;;;:::o;2909:109::-;2970:7;996:25;2992:1;:7;;;:21;;;;;;2985:28;;2909:109;;;:::o;2159:459:162:-;2217:7;2463:1;2458;:6;2454:45;;;2487:1;2480:8;;;;2454:45;2509:9;2525:1;2521;:5;2509:17;;2553:1;2548;2544;:5;;;;;;:10;2536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2603:8;;;2159:459;;;;;:::o;3073:130::-;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3150:46;;3073:130;;;;:::o;6206:1636:7:-;6285:15;;:::i;:::-;6323:1;6312;:7;;;:12;:28;;;;6339:1;6328;:7;;;:12;6312:28;6308:52;;;6349:11;;;;;;;;6358:1;6349:11;;;6342:18;;;;6308:52;996:25;6370:1;:7;;;:22;6366:36;;;6401:1;6394:8;;;;6366:36;996:25;6412:1;:7;;;:22;6408:36;;;6443:1;6436:8;;;;6408:36;6533:10;996:25;6546:10;6554:1;6546:7;:10::i;:::-;:16;;;:30;;;;;;6533:43;;6582:10;6595:13;6606:1;6595:10;:13::i;:::-;:19;;;6582:32;;6620:10;996:25;6633:10;6641:1;6633:7;:10::i;:::-;:16;;;:30;;;;;;6620:43;;6669:10;6682:13;6693:1;6682:10;:13::i;:::-;:19;;;6669:32;;6785:12;6805:2;6800;:7;6785:22;;6823:1;6817:2;:7;6813:63;;6847:2;6841;6834:4;:9;;;;;;:15;6826:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6813:63;6975:18;996:25;6996:4;:18;6975:39;;7032:1;7024:4;:9;7020:91;;996:25;7056:4;7043:10;:17;;;;;;:32;7035:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7020:91;7124:10;7117:17;;7141:12;7161:2;7156;:7;7141:22;;7179:1;7173:2;:7;7169:63;;7203:2;7197;7190:4;:9;;;;;;:15;7182:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7169:63;7239:12;7259:2;7254;:7;7239:22;;7277:1;7271:2;:7;7267:63;;7301:2;7295;7288:4;:9;;;;;;:15;7280:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7267:63;7347:14;:12;:14::i;:::-;7342:2;:19;;;;;;7337:24;;7377:14;:12;:14::i;:::-;7372:2;:19;;;;;;7367:24;;7397:12;7417:2;7412;:7;7397:22;;7435:1;7429:2;:7;7425:63;;7459:2;7453;7446:4;:9;;;;;;:15;7438:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7425:63;7572:22;;:::i;:::-;7597:14;;;;;;;;7606:4;7597:14;;;7572:39;;7626:27;7630:6;7638:14;;;;;;;;7647:4;7638:14;;;7626:3;:27::i;:::-;7617:36;;7695:27;7699:6;7707:14;;;;;;;;7716:4;7707:14;;;7695:3;:27::i;:::-;7686:36;;7764:27;7768:6;7776:14;;;;;;;;7785:4;7776:14;;;7764:3;:27::i;:::-;7755:36;;7831:6;7824:13;;;;;;;;;;;;6206:1636;;;;;:::o;1732:187:162:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;2163:127:7:-;2209:7;2231:54;2224:61;;2163:127;:::o;3718:338:162:-;3804:7;3901:1;3897;:5;3904:12;3889:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3889:28:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3927:9;3943:1;3939;:5;;;;;;3927:17;;4048:1;4041:8;;;3718:338;;;;;:::o;4068:159:7:-;4127:15;;:::i;:::-;4157:47;;;;;;;;996:25;;4167:1;:7;;;:21;;;;;;4166:37;4157:47;;;4150:54;;4068:159;;;:::o;4514:172::-;4576:15;;:::i;:::-;4606:57;;;;;;;;996:25;;4626:1;:7;;;:21;;;;;;4625:37;4615:1;:7;;;:47;4606:57;;;4599:64;;4514:172;;;:::o;1905:87::-;1952:7;1974:13;1967:20;;1905:87;:::o;5058:207::-;5132:15;;:::i;:::-;5155:9;5177:1;:7;;;5167:1;:7;;;:17;5155:29;;5203:1;:7;;;5198:1;:12;;5190:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5249:11;;;;;;;;5258:1;5249:11;;;5242:18;;;5058:207;;;;:::o;695:20782:137:-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
+ "source": "pragma solidity ^0.5.13;\n\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/ownership/Ownable.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\";\n\nimport \"./interfaces/IStableToken.sol\";\nimport \"../common/interfaces/ICeloToken.sol\";\nimport \"../common/interfaces/ICeloVersionedContract.sol\";\nimport \"../common/CalledByVm.sol\";\nimport \"../common/Initializable.sol\";\nimport \"../common/FixidityLib.sol\";\nimport \"../common/Freezable.sol\";\nimport \"../common/UsingRegistry.sol\";\nimport \"../common/UsingPrecompiles.sol\";\n\n/**\n * @title An ERC20 compliant token with adjustable supply.\n */\n// solhint-disable-next-line max-line-length\ncontract StableToken is\n ICeloVersionedContract,\n Ownable,\n Initializable,\n UsingRegistry,\n UsingPrecompiles,\n Freezable,\n CalledByVm,\n IStableToken,\n IERC20,\n ICeloToken\n{\n using FixidityLib for FixidityLib.Fraction;\n using SafeMath for uint256;\n\n event InflationFactorUpdated(uint256 factor, uint256 lastUpdated);\n\n event InflationParametersUpdated(uint256 rate, uint256 updatePeriod, uint256 lastUpdated);\n\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n event TransferComment(string comment);\n\n bytes32 constant GRANDA_MENTO_REGISTRY_ID = keccak256(abi.encodePacked(\"GrandaMento\"));\n\n string internal name_;\n string internal symbol_;\n uint8 internal decimals_;\n\n // Stored as units. Value can be found using unitsToValue().\n mapping(address => uint256) internal balances;\n uint256 internal totalSupply_;\n\n // Stored as values. Units can be found using valueToUnits().\n mapping(address => mapping(address => uint256)) internal allowed;\n\n // STABILITY FEE PARAMETERS\n\n // The `rate` is how much the `factor` is adjusted by per `updatePeriod`.\n // The `factor` describes units/value of StableToken, and is greater than or equal to 1.\n // The `updatePeriod` governs how often the `factor` is updated.\n // `factorLastUpdated` indicates when the inflation factor was last updated.\n struct InflationState {\n FixidityLib.Fraction rate;\n FixidityLib.Fraction factor;\n uint256 updatePeriod;\n uint256 factorLastUpdated;\n }\n\n InflationState inflationState;\n\n // The registry ID of the exchange contract with permission to mint and burn this token.\n // Unique per StableToken instance.\n bytes32 exchangeRegistryId;\n\n /**\n * @notice Recomputes and updates inflation factor if more than `updatePeriod`\n * has passed since last update.\n */\n modifier updateInflationFactor() {\n FixidityLib.Fraction memory updatedInflationFactor;\n uint256 lastUpdated;\n\n (updatedInflationFactor, lastUpdated) = getUpdatedInflationFactor();\n\n if (lastUpdated != inflationState.factorLastUpdated) {\n inflationState.factor = updatedInflationFactor;\n inflationState.factorLastUpdated = lastUpdated;\n emit InflationFactorUpdated(inflationState.factor.unwrap(), inflationState.factorLastUpdated);\n }\n _;\n }\n\n /**\n * @notice Returns the storage, major, minor, and patch version of the contract.\n * @return Storage version of the contract.\n * @return Major version of the contract.\n * @return Minor version of the contract.\n * @return Patch version of the contract.\n */\n function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) {\n return (1, 2, 0, 1);\n }\n\n /**\n * @notice Sets initialized == true on implementation contracts\n * @param test Set to true to skip implementation initialization\n */\n constructor(bool test) public Initializable(test) {}\n\n /**\n * @param _name The name of the stable token (English)\n * @param _symbol A short symbol identifying the token (e.g. \"cUSD\")\n * @param _decimals Tokens are divisible to this many decimal places.\n * @param registryAddress Address of the Registry contract.\n * @param inflationRate Weekly inflation rate.\n * @param inflationFactorUpdatePeriod How often the inflation factor is updated, in seconds.\n * @param initialBalanceAddresses Array of addresses with an initial balance.\n * @param initialBalanceValues Array of balance values corresponding to initialBalanceAddresses.\n * @param exchangeIdentifier String identifier of exchange in registry (for specific fiat pairs)\n */\n function initialize(\n string calldata _name,\n string calldata _symbol,\n uint8 _decimals,\n address registryAddress,\n uint256 inflationRate,\n uint256 inflationFactorUpdatePeriod,\n address[] calldata initialBalanceAddresses,\n uint256[] calldata initialBalanceValues,\n string calldata exchangeIdentifier\n ) external initializer {\n require(inflationRate != 0, \"Must provide a non-zero inflation rate\");\n require(inflationFactorUpdatePeriod > 0, \"inflationFactorUpdatePeriod must be > 0\");\n\n _transferOwnership(msg.sender);\n\n totalSupply_ = 0;\n name_ = _name;\n symbol_ = _symbol;\n decimals_ = _decimals;\n\n inflationState.rate = FixidityLib.wrap(inflationRate);\n inflationState.factor = FixidityLib.fixed1();\n inflationState.updatePeriod = inflationFactorUpdatePeriod;\n // solhint-disable-next-line not-rely-on-time\n inflationState.factorLastUpdated = now;\n\n require(initialBalanceAddresses.length == initialBalanceValues.length, \"Array length mismatch\");\n for (uint256 i = 0; i < initialBalanceAddresses.length; i = i.add(1)) {\n _mint(initialBalanceAddresses[i], initialBalanceValues[i]);\n }\n setRegistry(registryAddress);\n exchangeRegistryId = keccak256(abi.encodePacked(exchangeIdentifier));\n }\n\n /**\n * @notice Updates Inflation Parameters.\n * @param rate New rate.\n * @param updatePeriod How often inflationFactor is updated.\n */\n function setInflationParameters(uint256 rate, uint256 updatePeriod)\n external\n onlyOwner\n updateInflationFactor\n {\n require(rate != 0, \"Must provide a non-zero inflation rate.\");\n require(updatePeriod > 0, \"updatePeriod must be > 0\");\n inflationState.rate = FixidityLib.wrap(rate);\n inflationState.updatePeriod = updatePeriod;\n\n emit InflationParametersUpdated(\n rate,\n updatePeriod,\n // solhint-disable-next-line not-rely-on-time\n now\n );\n }\n\n /**\n * @notice Increase the allowance of another user.\n * @param spender The address which is being approved to spend StableToken.\n * @param value The increment of the amount of StableToken approved to the spender.\n * @return True if the transaction succeeds.\n */\n function increaseAllowance(address spender, uint256 value)\n external\n updateInflationFactor\n returns (bool)\n {\n require(spender != address(0), \"reserved address 0x0 cannot have allowance\");\n uint256 oldValue = allowed[msg.sender][spender];\n uint256 newValue = oldValue.add(value);\n allowed[msg.sender][spender] = newValue;\n emit Approval(msg.sender, spender, newValue);\n return true;\n }\n\n /**\n * @notice Decrease the allowance of another user.\n * @param spender The address which is being approved to spend StableToken.\n * @param value The decrement of the amount of StableToken approved to the spender.\n * @return True if the transaction succeeds.\n */\n function decreaseAllowance(address spender, uint256 value)\n external\n updateInflationFactor\n returns (bool)\n {\n uint256 oldValue = allowed[msg.sender][spender];\n uint256 newValue = oldValue.sub(value);\n allowed[msg.sender][spender] = newValue;\n emit Approval(msg.sender, spender, newValue);\n return true;\n }\n\n /**\n * @notice Approve a user to transfer StableToken on behalf of another user.\n * @param spender The address which is being approved to spend StableToken.\n * @param value The amount of StableToken approved to the spender.\n * @return True if the transaction succeeds.\n */\n function approve(address spender, uint256 value) external updateInflationFactor returns (bool) {\n require(spender != address(0), \"reserved address 0x0 cannot have allowance\");\n allowed[msg.sender][spender] = value;\n emit Approval(msg.sender, spender, value);\n return true;\n }\n\n /**\n * @notice Mints new StableToken and gives it to 'to'.\n * @param to The account for which to mint tokens.\n * @param value The amount of StableToken to mint.\n */\n function mint(address to, uint256 value) external updateInflationFactor returns (bool) {\n require(\n msg.sender == registry.getAddressForOrDie(getExchangeRegistryId()) ||\n msg.sender == registry.getAddressFor(VALIDATORS_REGISTRY_ID) ||\n msg.sender == registry.getAddressFor(GRANDA_MENTO_REGISTRY_ID),\n \"Sender not authorized to mint\"\n );\n return _mint(to, value);\n }\n\n /**\n * @notice Mints new StableToken and gives it to 'to'.\n * @param to The account for which to mint tokens.\n * @param value The amount of StableToken to mint.\n */\n function _mint(address to, uint256 value) private returns (bool) {\n require(to != address(0), \"0 is a reserved address\");\n if (value == 0) {\n return true;\n }\n\n uint256 units = _valueToUnits(inflationState.factor, value);\n totalSupply_ = totalSupply_.add(units);\n balances[to] = balances[to].add(units);\n emit Transfer(address(0), to, value);\n return true;\n }\n\n /**\n * @notice Transfer token for a specified address\n * @param to The address to transfer to.\n * @param value The amount to be transferred.\n * @param comment The transfer comment.\n * @return True if the transaction succeeds.\n */\n function transferWithComment(address to, uint256 value, string calldata comment)\n external\n updateInflationFactor\n onlyWhenNotFrozen\n returns (bool)\n {\n bool succeeded = transfer(to, value);\n emit TransferComment(comment);\n return succeeded;\n }\n\n /**\n * @notice Burns StableToken from the balance of msg.sender.\n * @param value The amount of StableToken to burn.\n */\n function burn(uint256 value) external updateInflationFactor returns (bool) {\n require(\n msg.sender == registry.getAddressForOrDie(getExchangeRegistryId()) ||\n msg.sender == registry.getAddressFor(GRANDA_MENTO_REGISTRY_ID),\n \"Sender not authorized to burn\"\n );\n uint256 units = _valueToUnits(inflationState.factor, value);\n require(units <= balances[msg.sender], \"value exceeded balance of sender\");\n totalSupply_ = totalSupply_.sub(units);\n balances[msg.sender] = balances[msg.sender].sub(units);\n emit Transfer(msg.sender, address(0), units);\n return true;\n }\n\n /**\n * @notice Transfers StableToken from one address to another on behalf of a user.\n * @param from The address to transfer StableToken from.\n * @param to The address to transfer StableToken to.\n * @param value The amount of StableToken to transfer.\n * @return True if the transaction succeeds.\n */\n function transferFrom(address from, address to, uint256 value)\n external\n updateInflationFactor\n onlyWhenNotFrozen\n returns (bool)\n {\n uint256 units = _valueToUnits(inflationState.factor, value);\n require(to != address(0), \"transfer attempted to reserved address 0x0\");\n require(units <= balances[from], \"transfer value exceeded balance of sender\");\n require(\n value <= allowed[from][msg.sender],\n \"transfer value exceeded sender's allowance for recipient\"\n );\n\n balances[to] = balances[to].add(units);\n balances[from] = balances[from].sub(units);\n allowed[from][msg.sender] = allowed[from][msg.sender].sub(value);\n emit Transfer(from, to, value);\n return true;\n }\n\n /**\n * @return The name of the stable token.\n */\n function name() external view returns (string memory) {\n return name_;\n }\n\n /**\n * @return The symbol of the stable token.\n */\n function symbol() external view returns (string memory) {\n return symbol_;\n }\n\n /**\n * @return The number of decimal places to which StableToken is divisible.\n */\n function decimals() external view returns (uint8) {\n return decimals_;\n }\n\n /**\n * @notice Gets the amount of owner's StableToken allowed to be spent by spender.\n * @param accountOwner The owner of the StableToken.\n * @param spender The spender of the StableToken.\n * @return The amount of StableToken owner is allowing spender to spend.\n */\n function allowance(address accountOwner, address spender) external view returns (uint256) {\n return allowed[accountOwner][spender];\n }\n\n /**\n * @notice Gets the balance of the specified address using the presently stored inflation factor.\n * @param accountOwner The address to query the balance of.\n * @return The balance of the specified address.\n */\n function balanceOf(address accountOwner) external view returns (uint256) {\n return unitsToValue(balances[accountOwner]);\n }\n\n /**\n * @return The total value of StableToken in existence\n * @dev Though totalSupply_ is stored in units, this returns value.\n */\n function totalSupply() external view returns (uint256) {\n return unitsToValue(totalSupply_);\n }\n\n /**\n * @notice gets inflation parameters.\n * @return rate\n * @return factor\n * @return updatePeriod\n * @return factorLastUpdated\n */\n function getInflationParameters() external view returns (uint256, uint256, uint256, uint256) {\n return (\n inflationState.rate.unwrap(),\n inflationState.factor.unwrap(),\n inflationState.updatePeriod,\n inflationState.factorLastUpdated\n );\n }\n\n /**\n * @notice Returns the units for a given value given the current inflation factor.\n * @param value The value to convert to units.\n * @return The units corresponding to `value` given the current inflation factor.\n * @dev We don't compute the updated inflationFactor here because\n * we assume any function calling this will have updated the inflation factor.\n */\n function valueToUnits(uint256 value) external view returns (uint256) {\n FixidityLib.Fraction memory updatedInflationFactor;\n\n (updatedInflationFactor, ) = getUpdatedInflationFactor();\n return _valueToUnits(updatedInflationFactor, value);\n }\n\n /**\n * @notice Returns the exchange id in the registry of the corresponding fiat pair exchange.\n * @dev When this storage is uninitialized, it falls back to the default EXCHANGE_REGISTRY_ID.\n * exchangeRegistryId was introduced after the initial release of cUSD's StableToken,\n * so exchangeRegistryId will be uninitialized for that contract. If cUSD's StableToken\n * exchangeRegistryId were to be correctly initialized, this function could be deprecated\n * in favor of using exchangeRegistryId directly.\n * @return Registry id for the corresponding exchange.\n */\n function getExchangeRegistryId() public view returns (bytes32) {\n if (exchangeRegistryId == bytes32(0)) {\n return EXCHANGE_REGISTRY_ID;\n } else {\n return exchangeRegistryId;\n }\n }\n\n /**\n * @notice Returns the value of a given number of units given the current inflation factor.\n * @param units The units to convert to value.\n * @return The value corresponding to `units` given the current inflation factor.\n */\n function unitsToValue(uint256 units) public view returns (uint256) {\n FixidityLib.Fraction memory updatedInflationFactor;\n\n (updatedInflationFactor, ) = getUpdatedInflationFactor();\n\n // We're ok using FixidityLib.divide here because updatedInflationFactor is\n // not going to surpass maxFixedDivisor any time soon.\n // Quick upper-bound estimation: if annual inflation were 5% (an order of\n // magnitude more than the initial proposal of 0.5%), in 500 years, the\n // inflation factor would be on the order of 10**10, which is still a safe\n // divisor.\n return FixidityLib.newFixed(units).divide(updatedInflationFactor).fromFixed();\n }\n\n /**\n * @notice Returns the units for a given value given the current inflation factor.\n * @param inflationFactor The current inflation factor.\n * @param value The value to convert to units.\n * @return The units corresponding to `value` given the current inflation factor.\n * @dev We assume any function calling this will have updated the inflation factor.\n */\n function _valueToUnits(FixidityLib.Fraction memory inflationFactor, uint256 value)\n private\n pure\n returns (uint256)\n {\n return inflationFactor.multiply(FixidityLib.newFixed(value)).fromFixed();\n }\n\n /**\n * @notice Computes the up-to-date inflation factor.\n * @return Current inflation factor.\n * @return Last time when the returned inflation factor was updated.\n */\n function getUpdatedInflationFactor() private view returns (FixidityLib.Fraction memory, uint256) {\n /* solhint-disable not-rely-on-time */\n if (now < inflationState.factorLastUpdated.add(inflationState.updatePeriod)) {\n return (inflationState.factor, inflationState.factorLastUpdated);\n }\n\n uint256 numerator;\n uint256 denominator;\n\n // TODO: handle retroactive updates given decreases to updatePeriod\n uint256 timesToApplyInflation = now.sub(inflationState.factorLastUpdated).div(\n inflationState.updatePeriod\n );\n\n (numerator, denominator) = fractionMulExp(\n inflationState.factor.unwrap(),\n FixidityLib.fixed1().unwrap(),\n inflationState.rate.unwrap(),\n FixidityLib.fixed1().unwrap(),\n timesToApplyInflation,\n decimals_\n );\n\n // This should never happen. If something went wrong updating the\n // inflation factor, keep the previous factor\n if (numerator == 0 || denominator == 0) {\n return (inflationState.factor, inflationState.factorLastUpdated);\n }\n\n FixidityLib.Fraction memory currentInflationFactor = FixidityLib.wrap(numerator).divide(\n FixidityLib.wrap(denominator)\n );\n uint256 lastUpdated = inflationState.factorLastUpdated.add(\n inflationState.updatePeriod.mul(timesToApplyInflation)\n );\n\n return (currentInflationFactor, lastUpdated);\n /* solhint-enable not-rely-on-time */\n }\n\n /**\n * @notice Transfers `value` from `msg.sender` to `to`\n * @param to The address to transfer to.\n * @param value The amount to be transferred.\n */\n // solhint-disable-next-line no-simple-event-func-name\n function transfer(address to, uint256 value)\n public\n updateInflationFactor\n onlyWhenNotFrozen\n returns (bool)\n {\n return _transfer(to, value);\n }\n\n /**\n * @notice Transfers StableToken from one address to another\n * @param to The address to transfer StableToken to.\n * @param value The amount of StableToken to be transferred.\n */\n function _transfer(address to, uint256 value) internal returns (bool) {\n require(to != address(0), \"transfer attempted to reserved address 0x0\");\n uint256 units = _valueToUnits(inflationState.factor, value);\n require(balances[msg.sender] >= units, \"transfer value exceeded balance of sender\");\n balances[msg.sender] = balances[msg.sender].sub(units);\n balances[to] = balances[to].add(units);\n emit Transfer(msg.sender, to, value);\n return true;\n }\n\n /**\n * @notice Reserve balance for making payments for gas in this StableToken currency.\n * @param from The account to reserve balance from\n * @param value The amount of balance to reserve\n * @dev Note that this function is called by the protocol when paying for tx fees in this\n * currency. After the tx is executed, gas is refunded to the sender and credited to the\n * various tx fee recipients via a call to `creditGasFees`. Note too that the events emitted\n * by `creditGasFees` reflect the *net* gas fee payments for the transaction.\n */\n function debitGasFees(address from, uint256 value)\n external\n onlyVm\n onlyWhenNotFrozen\n updateInflationFactor\n {\n uint256 units = _valueToUnits(inflationState.factor, value);\n balances[from] = balances[from].sub(units);\n totalSupply_ = totalSupply_.sub(units);\n }\n\n /**\n * @notice Alternative function to credit balance after making payments\n * for gas in this StableToken currency.\n * @param from The account to debit balance from\n * @param feeRecipient Coinbase address\n * @param gatewayFeeRecipient Gateway address\n * @param communityFund Community fund address\n * @param tipTxFee Coinbase fee\n * @param baseTxFee Community fund fee\n * @param gatewayFee Gateway fee\n * @dev Note that this function is called by the protocol when paying for tx fees in this\n * currency. Before the tx is executed, gas is debited from the sender via a call to\n * `debitGasFees`. Note too that the events emitted by `creditGasFees` reflect the *net* gas fee\n * payments for the transaction.\n */\n function creditGasFees(\n address from,\n address feeRecipient,\n address gatewayFeeRecipient,\n address communityFund,\n uint256 refund,\n uint256 tipTxFee,\n uint256 gatewayFee,\n uint256 baseTxFee\n ) external onlyVm onlyWhenNotFrozen {\n uint256 units = _valueToUnits(inflationState.factor, refund);\n balances[from] = balances[from].add(units);\n\n units = units.add(_creditGas(from, communityFund, baseTxFee));\n units = units.add(_creditGas(from, feeRecipient, tipTxFee));\n units = units.add(_creditGas(from, gatewayFeeRecipient, gatewayFee));\n totalSupply_ = totalSupply_.add(units);\n }\n\n function _creditGas(address from, address to, uint256 value) internal returns (uint256) {\n if (to == address(0)) {\n return 0;\n }\n uint256 units = _valueToUnits(inflationState.factor, value);\n balances[to] = balances[to].add(units);\n emit Transfer(from, to, value);\n return units;\n }\n\n}\n",
+ "sourcePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/StableToken.sol",
+ "ast": {
+ "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/StableToken.sol",
+ "exportedSymbols": {
+ "StableToken": [
+ 44644
+ ]
+ },
+ "id": 44645,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 43270,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".13"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:137"
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "id": 43271,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 46333,
+ "src": "26:59:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "id": 43272,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 46451,
+ "src": "86:63:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
+ "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
+ "id": 43273,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 46925,
+ "src": "150:64:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/interfaces/IStableToken.sol",
+ "file": "./interfaces/IStableToken.sol",
+ "id": 43274,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 45383,
+ "src": "216:39:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/interfaces/ICeloToken.sol",
+ "file": "../common/interfaces/ICeloToken.sol",
+ "id": 43275,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 9411,
+ "src": "256:45:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/interfaces/ICeloVersionedContract.sol",
+ "file": "../common/interfaces/ICeloVersionedContract.sol",
+ "id": 43276,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 9425,
+ "src": "302:57:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/CalledByVm.sol",
+ "file": "../common/CalledByVm.sol",
+ "id": 43277,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 2801,
+ "src": "360:34:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/Initializable.sol",
+ "file": "../common/Initializable.sol",
+ "id": 43278,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 4705,
+ "src": "395:37:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/FixidityLib.sol",
+ "file": "../common/FixidityLib.sol",
+ "id": 43279,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 3611,
+ "src": "433:35:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/Freezable.sol",
+ "file": "../common/Freezable.sol",
+ "id": 43280,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 3633,
+ "src": "469:33:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/UsingRegistry.sol",
+ "file": "../common/UsingRegistry.sol",
+ "id": 43281,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 8616,
+ "src": "503:37:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/UsingPrecompiles.sol",
+ "file": "../common/UsingPrecompiles.sol",
+ "id": 43282,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 8210,
+ "src": "541:40:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "baseContracts": [
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 43283,
+ "name": "ICeloVersionedContract",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 9424,
+ "src": "721:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_ICeloVersionedContract_$9424",
+ "typeString": "contract ICeloVersionedContract"
+ }
+ },
+ "id": 43284,
+ "nodeType": "InheritanceSpecifier",
+ "src": "721:22:137"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 43285,
+ "name": "Ownable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 46450,
+ "src": "747:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Ownable_$46450",
+ "typeString": "contract Ownable"
+ }
+ },
+ "id": 43286,
+ "nodeType": "InheritanceSpecifier",
+ "src": "747:7:137"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 43287,
+ "name": "Initializable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 4704,
+ "src": "758:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Initializable_$4704",
+ "typeString": "contract Initializable"
+ }
+ },
+ "id": 43288,
+ "nodeType": "InheritanceSpecifier",
+ "src": "758:13:137"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 43289,
+ "name": "UsingRegistry",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 8615,
+ "src": "775:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_UsingRegistry_$8615",
+ "typeString": "contract UsingRegistry"
+ }
+ },
+ "id": 43290,
+ "nodeType": "InheritanceSpecifier",
+ "src": "775:13:137"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 43291,
+ "name": "UsingPrecompiles",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 8209,
+ "src": "792:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_UsingPrecompiles_$8209",
+ "typeString": "contract UsingPrecompiles"
+ }
+ },
+ "id": 43292,
+ "nodeType": "InheritanceSpecifier",
+ "src": "792:16:137"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 43293,
+ "name": "Freezable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3632,
+ "src": "812:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Freezable_$3632",
+ "typeString": "contract Freezable"
+ }
+ },
+ "id": 43294,
+ "nodeType": "InheritanceSpecifier",
+ "src": "812:9:137"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 43295,
+ "name": "CalledByVm",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 2800,
+ "src": "825:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_CalledByVm_$2800",
+ "typeString": "contract CalledByVm"
+ }
+ },
+ "id": 43296,
+ "nodeType": "InheritanceSpecifier",
+ "src": "825:10:137"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 43297,
+ "name": "IStableToken",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 45382,
+ "src": "839:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IStableToken_$45382",
+ "typeString": "contract IStableToken"
+ }
+ },
+ "id": 43298,
+ "nodeType": "InheritanceSpecifier",
+ "src": "839:12:137"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 43299,
+ "name": "IERC20",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 46924,
+ "src": "855:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IERC20_$46924",
+ "typeString": "contract IERC20"
+ }
+ },
+ "id": 43300,
+ "nodeType": "InheritanceSpecifier",
+ "src": "855:6:137"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 43301,
+ "name": "ICeloToken",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 9410,
+ "src": "865:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_ICeloToken_$9410",
+ "typeString": "contract ICeloToken"
+ }
+ },
+ "id": 43302,
+ "nodeType": "InheritanceSpecifier",
+ "src": "865:10:137"
+ }
+ ],
+ "contractDependencies": [
+ 2800,
+ 3632,
+ 4704,
+ 8209,
+ 8615,
+ 9410,
+ 9424,
+ 45382,
+ 45995,
+ 46450,
+ 46924
+ ],
+ "contractKind": "contract",
+ "documentation": "@title An ERC20 compliant token with adjustable supply.",
+ "fullyImplemented": true,
+ "id": 44644,
+ "linearizedBaseContracts": [
+ 44644,
+ 9410,
+ 46924,
+ 45382,
+ 2800,
+ 3632,
+ 8209,
+ 8615,
+ 4704,
+ 46450,
+ 45995,
+ 9424
+ ],
+ "name": "StableToken",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "id": 43305,
+ "libraryName": {
+ "contractScope": null,
+ "id": 43303,
+ "name": "FixidityLib",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3610,
+ "src": "886:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_FixidityLib_$3610",
+ "typeString": "library FixidityLib"
+ }
+ },
+ "nodeType": "UsingForDirective",
+ "src": "880:43:137",
+ "typeName": {
+ "contractScope": null,
+ "id": 43304,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "902:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ }
+ },
+ {
+ "id": 43308,
+ "libraryName": {
+ "contractScope": null,
+ "id": 43306,
+ "name": "SafeMath",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 46332,
+ "src": "932:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_SafeMath_$46332",
+ "typeString": "library SafeMath"
+ }
+ },
+ "nodeType": "UsingForDirective",
+ "src": "926:27:137",
+ "typeName": {
+ "id": 43307,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "945:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 43314,
+ "name": "InflationFactorUpdated",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 43313,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43310,
+ "indexed": false,
+ "name": "factor",
+ "nodeType": "VariableDeclaration",
+ "scope": 43314,
+ "src": "986:14:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43309,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "986:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43312,
+ "indexed": false,
+ "name": "lastUpdated",
+ "nodeType": "VariableDeclaration",
+ "scope": 43314,
+ "src": "1002:19:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43311,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1002:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "985:37:137"
+ },
+ "src": "957:66:137"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 43322,
+ "name": "InflationParametersUpdated",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 43321,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43316,
+ "indexed": false,
+ "name": "rate",
+ "nodeType": "VariableDeclaration",
+ "scope": 43322,
+ "src": "1060:12:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43315,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1060:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43318,
+ "indexed": false,
+ "name": "updatePeriod",
+ "nodeType": "VariableDeclaration",
+ "scope": 43322,
+ "src": "1074:20:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43317,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1074:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43320,
+ "indexed": false,
+ "name": "lastUpdated",
+ "nodeType": "VariableDeclaration",
+ "scope": 43322,
+ "src": "1096:19:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43319,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1096:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1059:57:137"
+ },
+ "src": "1027:90:137"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 43330,
+ "name": "Transfer",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 43329,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43324,
+ "indexed": true,
+ "name": "from",
+ "nodeType": "VariableDeclaration",
+ "scope": 43330,
+ "src": "1136:20:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43323,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1136:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43326,
+ "indexed": true,
+ "name": "to",
+ "nodeType": "VariableDeclaration",
+ "scope": 43330,
+ "src": "1158:18:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43325,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1158:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43328,
+ "indexed": false,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 43330,
+ "src": "1178:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43327,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1178:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1135:57:137"
+ },
+ "src": "1121:72:137"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 43334,
+ "name": "TransferComment",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 43333,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43332,
+ "indexed": false,
+ "name": "comment",
+ "nodeType": "VariableDeclaration",
+ "scope": 43334,
+ "src": "1219:14:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 43331,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "1219:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1218:16:137"
+ },
+ "src": "1197:38:137"
+ },
+ {
+ "constant": true,
+ "id": 43342,
+ "name": "GRANDA_MENTO_REGISTRY_ID",
+ "nodeType": "VariableDeclaration",
+ "scope": 44644,
+ "src": "1239:86:137",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 43335,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1239:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "4772616e64614d656e746f",
+ "id": 43339,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1310:13:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_0d4406241408ce11a9d51ae594b109e000ba6a77345acafba2dc2ddfcc3b5868",
+ "typeString": "literal_string \"GrandaMento\""
+ },
+ "value": "GrandaMento"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_0d4406241408ce11a9d51ae594b109e000ba6a77345acafba2dc2ddfcc3b5868",
+ "typeString": "literal_string \"GrandaMento\""
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43337,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47575,
+ "src": "1293:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 43338,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encodePacked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1293:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 43340,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1293:31:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 43336,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47582,
+ "src": "1283:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 43341,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1283:42:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43344,
+ "name": "name_",
+ "nodeType": "VariableDeclaration",
+ "scope": 44644,
+ "src": "1330:21:137",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 43343,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "1330:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43346,
+ "name": "symbol_",
+ "nodeType": "VariableDeclaration",
+ "scope": 44644,
+ "src": "1355:23:137",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 43345,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "1355:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43348,
+ "name": "decimals_",
+ "nodeType": "VariableDeclaration",
+ "scope": 44644,
+ "src": "1382:24:137",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 43347,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "1382:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43352,
+ "name": "balances",
+ "nodeType": "VariableDeclaration",
+ "scope": 44644,
+ "src": "1474:45:137",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ },
+ "typeName": {
+ "id": 43351,
+ "keyType": {
+ "id": 43349,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1482:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1474:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ },
+ "valueType": {
+ "id": 43350,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1493:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43354,
+ "name": "totalSupply_",
+ "nodeType": "VariableDeclaration",
+ "scope": 44644,
+ "src": "1523:29:137",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43353,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1523:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43360,
+ "name": "allowed",
+ "nodeType": "VariableDeclaration",
+ "scope": 44644,
+ "src": "1621:64:137",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ },
+ "typeName": {
+ "id": 43359,
+ "keyType": {
+ "id": 43355,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1629:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1621:47:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ },
+ "valueType": {
+ "id": 43358,
+ "keyType": {
+ "id": 43356,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1648:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1640:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ },
+ "valueType": {
+ "id": 43357,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1659:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "canonicalName": "StableToken.InflationState",
+ "id": 43369,
+ "members": [
+ {
+ "constant": false,
+ "id": 43362,
+ "name": "rate",
+ "nodeType": "VariableDeclaration",
+ "scope": 43369,
+ "src": "2062:25:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 43361,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "2062:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43364,
+ "name": "factor",
+ "nodeType": "VariableDeclaration",
+ "scope": 43369,
+ "src": "2093:27:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 43363,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "2093:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43366,
+ "name": "updatePeriod",
+ "nodeType": "VariableDeclaration",
+ "scope": 43369,
+ "src": "2126:20:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43365,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2126:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43368,
+ "name": "factorLastUpdated",
+ "nodeType": "VariableDeclaration",
+ "scope": 43369,
+ "src": "2152:25:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43367,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2152:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "name": "InflationState",
+ "nodeType": "StructDefinition",
+ "scope": 44644,
+ "src": "2034:148:137",
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 43371,
+ "name": "inflationState",
+ "nodeType": "VariableDeclaration",
+ "scope": 44644,
+ "src": "2186:29:137",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 43370,
+ "name": "InflationState",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 43369,
+ "src": "2186:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage_ptr",
+ "typeString": "struct StableToken.InflationState"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43373,
+ "name": "exchangeRegistryId",
+ "nodeType": "VariableDeclaration",
+ "scope": 44644,
+ "src": "2349:26:137",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 43372,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "2349:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 43418,
+ "nodeType": "Block",
+ "src": "2541:442:137",
+ "statements": [
+ {
+ "assignments": [
+ 43378
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 43378,
+ "name": "updatedInflationFactor",
+ "nodeType": "VariableDeclaration",
+ "scope": 43418,
+ "src": "2547:50:137",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 43377,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "2547:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 43379,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2547:50:137"
+ },
+ {
+ "assignments": [
+ 43381
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 43381,
+ "name": "lastUpdated",
+ "nodeType": "VariableDeclaration",
+ "scope": 43418,
+ "src": "2603:19:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43380,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2603:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 43382,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2603:19:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43388,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 43383,
+ "name": "updatedInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43378,
+ "src": "2630:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43384,
+ "name": "lastUpdated",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43381,
+ "src": "2654:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 43385,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "TupleExpression",
+ "src": "2629:37:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$",
+ "typeString": "tuple(struct FixidityLib.Fraction memory,uint256)"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 43386,
+ "name": "getUpdatedInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44383,
+ "src": "2669:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$",
+ "typeString": "function () view returns (struct FixidityLib.Fraction memory,uint256)"
+ }
+ },
+ "id": 43387,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2669:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$",
+ "typeString": "tuple(struct FixidityLib.Fraction memory,uint256)"
+ }
+ },
+ "src": "2629:67:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43389,
+ "nodeType": "ExpressionStatement",
+ "src": "2629:67:137"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 43393,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43390,
+ "name": "lastUpdated",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43381,
+ "src": "2707:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43391,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "2722:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43392,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factorLastUpdated",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43368,
+ "src": "2722:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2707:47:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 43416,
+ "nodeType": "IfStatement",
+ "src": "2703:269:137",
+ "trueBody": {
+ "id": 43415,
+ "nodeType": "Block",
+ "src": "2756:216:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43398,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43394,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "2764:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43396,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "2764:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43397,
+ "name": "updatedInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43378,
+ "src": "2788:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "src": "2764:46:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "id": 43399,
+ "nodeType": "ExpressionStatement",
+ "src": "2764:46:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43404,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43400,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "2818:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43402,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "factorLastUpdated",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43368,
+ "src": "2818:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43403,
+ "name": "lastUpdated",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43381,
+ "src": "2853:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2818:46:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43405,
+ "nodeType": "ExpressionStatement",
+ "src": "2818:46:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43407,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "2900:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43408,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "2900:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "id": 43409,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unwrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3055,
+ "src": "2900:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)"
+ }
+ },
+ "id": 43410,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2900:30:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43411,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "2932:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43412,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factorLastUpdated",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43368,
+ "src": "2932:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43406,
+ "name": "InflationFactorUpdated",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43314,
+ "src": "2877:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
+ "typeString": "function (uint256,uint256)"
+ }
+ },
+ "id": 43413,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2877:88:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43414,
+ "nodeType": "EmitStatement",
+ "src": "2872:93:137"
+ }
+ ]
+ }
+ },
+ {
+ "id": 43417,
+ "nodeType": "PlaceholderStatement",
+ "src": "2977:1:137"
+ }
+ ]
+ },
+ "documentation": "@notice Recomputes and updates inflation factor if more than `updatePeriod`\nhas passed since last update.",
+ "id": 43419,
+ "name": "updateInflationFactor",
+ "nodeType": "ModifierDefinition",
+ "parameters": {
+ "id": 43374,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "2538:2:137"
+ },
+ "src": "2508:475:137",
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 43436,
+ "nodeType": "Block",
+ "src": "3347:30:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 43430,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3361:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "32",
+ "id": 43431,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3364:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_2_by_1",
+ "typeString": "int_const 2"
+ },
+ "value": "2"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43432,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3367:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 43433,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3370:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "id": 43434,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "3360:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_rational_1_by_1_$_t_rational_2_by_1_$_t_rational_0_by_1_$_t_rational_1_by_1_$",
+ "typeString": "tuple(int_const 1,int_const 2,int_const 0,int_const 1)"
+ }
+ },
+ "functionReturnParameters": 43429,
+ "id": 43435,
+ "nodeType": "Return",
+ "src": "3353:19:137"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the storage, major, minor, and patch version of the contract.\n@return Storage version of the contract.\n@return Major version of the contract.\n@return Minor version of the contract.\n@return Patch version of the contract.",
+ "id": 43437,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getVersionNumber",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43420,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3285:2:137"
+ },
+ "returnParameters": {
+ "id": 43429,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43422,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43437,
+ "src": "3311:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43421,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3311:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43424,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43437,
+ "src": "3320:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43423,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3320:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43426,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43437,
+ "src": "3329:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43425,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3329:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43428,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43437,
+ "src": "3338:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43427,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3338:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3310:36:137"
+ },
+ "scope": 44644,
+ "src": "3260:117:137",
+ "stateMutability": "pure",
+ "superFunction": 9423,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 43445,
+ "nodeType": "Block",
+ "src": "3576:2:137",
+ "statements": []
+ },
+ "documentation": "@notice Sets initialized == true on implementation contracts\n@param test Set to true to skip implementation initialization",
+ "id": 43446,
+ "implemented": true,
+ "kind": "constructor",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43442,
+ "name": "test",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43439,
+ "src": "3570:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 43443,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43441,
+ "name": "Initializable",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 4704,
+ "src": "3556:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Initializable_$4704_$",
+ "typeString": "type(contract Initializable)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "3556:19:137"
+ }
+ ],
+ "name": "",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43440,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43439,
+ "name": "test",
+ "nodeType": "VariableDeclaration",
+ "scope": 43446,
+ "src": "3538:9:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 43438,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "3538:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3537:11:137"
+ },
+ "returnParameters": {
+ "id": 43444,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3576:0:137"
+ },
+ "scope": 44644,
+ "src": "3526:52:137",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 43583,
+ "nodeType": "Block",
+ "src": "4630:923:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 43474,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43472,
+ "name": "inflationRate",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43456,
+ "src": "4644:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43473,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "4661:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "4644:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4d7573742070726f766964652061206e6f6e2d7a65726f20696e666c6174696f6e2072617465",
+ "id": 43475,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "4664:40:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_48e3066a90a0ef22dcbd5db7ad3d867f55cd314a2999106fc4f8ebcc7e6bd881",
+ "typeString": "literal_string \"Must provide a non-zero inflation rate\""
+ },
+ "value": "Must provide a non-zero inflation rate"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_48e3066a90a0ef22dcbd5db7ad3d867f55cd314a2999106fc4f8ebcc7e6bd881",
+ "typeString": "literal_string \"Must provide a non-zero inflation rate\""
+ }
+ ],
+ "id": 43471,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "4636:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43476,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4636:69:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43477,
+ "nodeType": "ExpressionStatement",
+ "src": "4636:69:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 43481,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43479,
+ "name": "inflationFactorUpdatePeriod",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43458,
+ "src": "4719:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43480,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "4749:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "4719:31:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "696e666c6174696f6e466163746f72557064617465506572696f64206d757374206265203e2030",
+ "id": 43482,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "4752:41:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_18fc288b8179f1f90a98b1cf37d5ee2af3d5162ca25cf88078de10012e395bb0",
+ "typeString": "literal_string \"inflationFactorUpdatePeriod must be > 0\""
+ },
+ "value": "inflationFactorUpdatePeriod must be > 0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_18fc288b8179f1f90a98b1cf37d5ee2af3d5162ca25cf88078de10012e395bb0",
+ "typeString": "literal_string \"inflationFactorUpdatePeriod must be > 0\""
+ }
+ ],
+ "id": 43478,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "4711:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43483,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4711:83:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43484,
+ "nodeType": "ExpressionStatement",
+ "src": "4711:83:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43486,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "4820:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43487,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "4820:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 43485,
+ "name": "_transferOwnership",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 46449,
+ "src": "4801:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 43488,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4801:30:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43489,
+ "nodeType": "ExpressionStatement",
+ "src": "4801:30:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43492,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 43490,
+ "name": "totalSupply_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43354,
+ "src": "4838:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43491,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "4853:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "4838:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43493,
+ "nodeType": "ExpressionStatement",
+ "src": "4838:16:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43496,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 43494,
+ "name": "name_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43344,
+ "src": "4860:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43495,
+ "name": "_name",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43448,
+ "src": "4868:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ },
+ "src": "4860:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "id": 43497,
+ "nodeType": "ExpressionStatement",
+ "src": "4860:13:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43500,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 43498,
+ "name": "symbol_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43346,
+ "src": "4879:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43499,
+ "name": "_symbol",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43450,
+ "src": "4889:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ },
+ "src": "4879:17:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "id": 43501,
+ "nodeType": "ExpressionStatement",
+ "src": "4879:17:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43504,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 43502,
+ "name": "decimals_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43348,
+ "src": "4902:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43503,
+ "name": "_decimals",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43452,
+ "src": "4914:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "src": "4902:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "id": 43505,
+ "nodeType": "ExpressionStatement",
+ "src": "4902:21:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43513,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43506,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "4930:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43508,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "rate",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43362,
+ "src": "4930:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43511,
+ "name": "inflationRate",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43456,
+ "src": "4969:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43509,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "4952:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 43510,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "wrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3044,
+ "src": "4952:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 43512,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4952:31:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "src": "4930:53:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "id": 43514,
+ "nodeType": "ExpressionStatement",
+ "src": "4930:53:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43521,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43515,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "4989:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43517,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "4989:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43518,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "5013:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 43519,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "fixed1",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3032,
+ "src": "5013:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function () pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 43520,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5013:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "src": "4989:44:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "id": 43522,
+ "nodeType": "ExpressionStatement",
+ "src": "4989:44:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43527,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43523,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "5039:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43525,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "updatePeriod",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43366,
+ "src": "5039:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43526,
+ "name": "inflationFactorUpdatePeriod",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43458,
+ "src": "5069:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "5039:57:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43528,
+ "nodeType": "ExpressionStatement",
+ "src": "5039:57:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43533,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43529,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "5152:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43531,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "factorLastUpdated",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43368,
+ "src": "5152:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43532,
+ "name": "now",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47590,
+ "src": "5187:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "5152:38:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43534,
+ "nodeType": "ExpressionStatement",
+ "src": "5152:38:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 43540,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43536,
+ "name": "initialBalanceAddresses",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43461,
+ "src": "5205:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 43537,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5205:30:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43538,
+ "name": "initialBalanceValues",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43464,
+ "src": "5239:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
+ "typeString": "uint256[] calldata"
+ }
+ },
+ "id": 43539,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5239:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "5205:61:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4172726179206c656e677468206d69736d61746368",
+ "id": 43541,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "5268:23:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_179ae693e0c70d403e6d1a2bebe6454a8d095a8abd12c6f3f032c5018f3e2aea",
+ "typeString": "literal_string \"Array length mismatch\""
+ },
+ "value": "Array length mismatch"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_179ae693e0c70d403e6d1a2bebe6454a8d095a8abd12c6f3f032c5018f3e2aea",
+ "typeString": "literal_string \"Array length mismatch\""
+ }
+ ],
+ "id": 43535,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "5197:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43542,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5197:95:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43543,
+ "nodeType": "ExpressionStatement",
+ "src": "5197:95:137"
+ },
+ {
+ "body": {
+ "id": 43568,
+ "nodeType": "Block",
+ "src": "5368:73:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43560,
+ "name": "initialBalanceAddresses",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43461,
+ "src": "5382:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 43562,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 43561,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43545,
+ "src": "5406:1:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "5382:26:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43563,
+ "name": "initialBalanceValues",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43464,
+ "src": "5410:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
+ "typeString": "uint256[] calldata"
+ }
+ },
+ "id": 43565,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 43564,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43545,
+ "src": "5431:1:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "5410:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43559,
+ "name": "_mint",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43878,
+ "src": "5376:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (address,uint256) returns (bool)"
+ }
+ },
+ "id": 43566,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5376:58:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 43567,
+ "nodeType": "ExpressionStatement",
+ "src": "5376:58:137"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 43551,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43548,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43545,
+ "src": "5318:1:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43549,
+ "name": "initialBalanceAddresses",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43461,
+ "src": "5322:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 43550,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5322:30:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "5318:34:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 43569,
+ "initializationExpression": {
+ "assignments": [
+ 43545
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 43545,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 43569,
+ "src": "5303:9:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43544,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "5303:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 43547,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43546,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "5315:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "5303:13:137"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43557,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 43552,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43545,
+ "src": "5354:1:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 43555,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "5364:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43553,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43545,
+ "src": "5358:1:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43554,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "5358:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 43556,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5358:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "5354:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43558,
+ "nodeType": "ExpressionStatement",
+ "src": "5354:12:137"
+ },
+ "nodeType": "ForStatement",
+ "src": "5298:143:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43571,
+ "name": "registryAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43454,
+ "src": "5458:15:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 43570,
+ "name": "setRegistry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8432,
+ "src": "5446:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 43572,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5446:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43573,
+ "nodeType": "ExpressionStatement",
+ "src": "5446:28:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43581,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 43574,
+ "name": "exchangeRegistryId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43373,
+ "src": "5480:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43578,
+ "name": "exchangeIdentifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43466,
+ "src": "5528:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43576,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47575,
+ "src": "5511:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 43577,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encodePacked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5511:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 43579,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5511:36:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 43575,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47582,
+ "src": "5501:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 43580,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5501:47:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "5480:68:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "id": 43582,
+ "nodeType": "ExpressionStatement",
+ "src": "5480:68:137"
+ }
+ ]
+ },
+ "documentation": "@param _name The name of the stable token (English)\n@param _symbol A short symbol identifying the token (e.g. \"cUSD\")\n@param _decimals Tokens are divisible to this many decimal places.\n@param registryAddress Address of the Registry contract.\n@param inflationRate Weekly inflation rate.\n@param inflationFactorUpdatePeriod How often the inflation factor is updated, in seconds.\n@param initialBalanceAddresses Array of addresses with an initial balance.\n@param initialBalanceValues Array of balance values corresponding to initialBalanceAddresses.\n@param exchangeIdentifier String identifier of exchange in registry (for specific fiat pairs)",
+ "id": 43584,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 43469,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43468,
+ "name": "initializer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 4703,
+ "src": "4618:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "4618:11:137"
+ }
+ ],
+ "name": "initialize",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43467,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43448,
+ "name": "_name",
+ "nodeType": "VariableDeclaration",
+ "scope": 43584,
+ "src": "4303:21:137",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 43447,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "4303:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43450,
+ "name": "_symbol",
+ "nodeType": "VariableDeclaration",
+ "scope": 43584,
+ "src": "4330:23:137",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 43449,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "4330:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43452,
+ "name": "_decimals",
+ "nodeType": "VariableDeclaration",
+ "scope": 43584,
+ "src": "4359:15:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 43451,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "4359:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43454,
+ "name": "registryAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 43584,
+ "src": "4380:23:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43453,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4380:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43456,
+ "name": "inflationRate",
+ "nodeType": "VariableDeclaration",
+ "scope": 43584,
+ "src": "4409:21:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43455,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4409:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43458,
+ "name": "inflationFactorUpdatePeriod",
+ "nodeType": "VariableDeclaration",
+ "scope": 43584,
+ "src": "4436:35:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43457,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4436:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43461,
+ "name": "initialBalanceAddresses",
+ "nodeType": "VariableDeclaration",
+ "scope": 43584,
+ "src": "4477:42:137",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 43459,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4477:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 43460,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "4477:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43464,
+ "name": "initialBalanceValues",
+ "nodeType": "VariableDeclaration",
+ "scope": 43584,
+ "src": "4525:39:137",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 43462,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4525:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43463,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "4525:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43466,
+ "name": "exchangeIdentifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 43584,
+ "src": "4570:34:137",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 43465,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "4570:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4297:311:137"
+ },
+ "returnParameters": {
+ "id": 43470,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "4630:0:137"
+ },
+ "scope": 44644,
+ "src": "4278:1275:137",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 43630,
+ "nodeType": "Block",
+ "src": "5825:368:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 43598,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43596,
+ "name": "rate",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43586,
+ "src": "5839:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43597,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "5847:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "5839:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4d7573742070726f766964652061206e6f6e2d7a65726f20696e666c6174696f6e20726174652e",
+ "id": 43599,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "5850:41:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_4c92d24b7841f674f98efc72380715bbc870a1e09e6cbb15da6807fbc6a83e3c",
+ "typeString": "literal_string \"Must provide a non-zero inflation rate.\""
+ },
+ "value": "Must provide a non-zero inflation rate."
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_4c92d24b7841f674f98efc72380715bbc870a1e09e6cbb15da6807fbc6a83e3c",
+ "typeString": "literal_string \"Must provide a non-zero inflation rate.\""
+ }
+ ],
+ "id": 43595,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "5831:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43600,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5831:61:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43601,
+ "nodeType": "ExpressionStatement",
+ "src": "5831:61:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 43605,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43603,
+ "name": "updatePeriod",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43588,
+ "src": "5906:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43604,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "5921:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "5906:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "757064617465506572696f64206d757374206265203e2030",
+ "id": 43606,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "5924:26:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_70c107d48e5d4c8ed0a1edb11ec9dc1cca74f185850a164579f8325099c75037",
+ "typeString": "literal_string \"updatePeriod must be > 0\""
+ },
+ "value": "updatePeriod must be > 0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_70c107d48e5d4c8ed0a1edb11ec9dc1cca74f185850a164579f8325099c75037",
+ "typeString": "literal_string \"updatePeriod must be > 0\""
+ }
+ ],
+ "id": 43602,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "5898:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43607,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5898:53:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43608,
+ "nodeType": "ExpressionStatement",
+ "src": "5898:53:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43616,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43609,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "5957:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43611,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "rate",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43362,
+ "src": "5957:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43614,
+ "name": "rate",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43586,
+ "src": "5996:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43612,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "5979:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 43613,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "wrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3044,
+ "src": "5979:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 43615,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5979:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "src": "5957:44:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "id": 43617,
+ "nodeType": "ExpressionStatement",
+ "src": "5957:44:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43622,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43618,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "6007:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43620,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "updatePeriod",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43366,
+ "src": "6007:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43621,
+ "name": "updatePeriod",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43588,
+ "src": "6037:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "6007:42:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43623,
+ "nodeType": "ExpressionStatement",
+ "src": "6007:42:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43625,
+ "name": "rate",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43586,
+ "src": "6095:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43626,
+ "name": "updatePeriod",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43588,
+ "src": "6107:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43627,
+ "name": "now",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47590,
+ "src": "6179:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43624,
+ "name": "InflationParametersUpdated",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43322,
+ "src": "6061:26:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
+ "typeString": "function (uint256,uint256,uint256)"
+ }
+ },
+ "id": 43628,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6061:127:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43629,
+ "nodeType": "EmitStatement",
+ "src": "6056:132:137"
+ }
+ ]
+ },
+ "documentation": "@notice Updates Inflation Parameters.\n@param rate New rate.\n@param updatePeriod How often inflationFactor is updated.",
+ "id": 43631,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 43591,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43590,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 46383,
+ "src": "5787:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "5787:9:137"
+ },
+ {
+ "arguments": null,
+ "id": 43593,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43592,
+ "name": "updateInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43419,
+ "src": "5801:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "5801:21:137"
+ }
+ ],
+ "name": "setInflationParameters",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43589,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43586,
+ "name": "rate",
+ "nodeType": "VariableDeclaration",
+ "scope": 43631,
+ "src": "5734:12:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43585,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "5734:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43588,
+ "name": "updatePeriod",
+ "nodeType": "VariableDeclaration",
+ "scope": 43631,
+ "src": "5748:20:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43587,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "5748:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5733:36:137"
+ },
+ "returnParameters": {
+ "id": 43594,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5825:0:137"
+ },
+ "scope": 44644,
+ "src": "5702:491:137",
+ "stateMutability": "nonpayable",
+ "superFunction": 45349,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 43685,
+ "nodeType": "Block",
+ "src": "6592:296:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 43647,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43643,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43633,
+ "src": "6606:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43645,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6625:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 43644,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "6617:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 43646,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6617:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "6606:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "72657365727665642061646472657373203078302063616e6e6f74206861766520616c6c6f77616e6365",
+ "id": 43648,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6629:44:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_7de671b6ae78fe029c902b607a4a45ad03a25299ef0bdb1be389a1507e42c853",
+ "typeString": "literal_string \"reserved address 0x0 cannot have allowance\""
+ },
+ "value": "reserved address 0x0 cannot have allowance"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_7de671b6ae78fe029c902b607a4a45ad03a25299ef0bdb1be389a1507e42c853",
+ "typeString": "literal_string \"reserved address 0x0 cannot have allowance\""
+ }
+ ],
+ "id": 43642,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "6598:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43649,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6598:76:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43650,
+ "nodeType": "ExpressionStatement",
+ "src": "6598:76:137"
+ },
+ {
+ "assignments": [
+ 43652
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 43652,
+ "name": "oldValue",
+ "nodeType": "VariableDeclaration",
+ "scope": 43685,
+ "src": "6680:16:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43651,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "6680:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 43659,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43653,
+ "name": "allowed",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43360,
+ "src": "6699:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ }
+ },
+ "id": 43656,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43654,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "6707:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43655,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "6707:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "6699:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 43658,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 43657,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43633,
+ "src": "6719:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "6699:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "6680:47:137"
+ },
+ {
+ "assignments": [
+ 43661
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 43661,
+ "name": "newValue",
+ "nodeType": "VariableDeclaration",
+ "scope": 43685,
+ "src": "6733:16:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43660,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "6733:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 43666,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43664,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43635,
+ "src": "6765:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43662,
+ "name": "oldValue",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43652,
+ "src": "6752:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43663,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "6752:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 43665,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6752:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "6733:38:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43674,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43667,
+ "name": "allowed",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43360,
+ "src": "6777:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ }
+ },
+ "id": 43671,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43668,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "6785:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43669,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "6785:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "6777:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 43672,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 43670,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43633,
+ "src": "6797:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "6777:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43673,
+ "name": "newValue",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43661,
+ "src": "6808:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "6777:39:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43675,
+ "nodeType": "ExpressionStatement",
+ "src": "6777:39:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43677,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "6836:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43678,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "6836:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43679,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43633,
+ "src": "6848:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43680,
+ "name": "newValue",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43661,
+ "src": "6857:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43676,
+ "name": "Approval",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 46923,
+ "src": "6827:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,address,uint256)"
+ }
+ },
+ "id": 43681,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6827:39:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43682,
+ "nodeType": "EmitStatement",
+ "src": "6822:44:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 43683,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6879:4:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 43641,
+ "id": 43684,
+ "nodeType": "Return",
+ "src": "6872:11:137"
+ }
+ ]
+ },
+ "documentation": "@notice Increase the allowance of another user.\n@param spender The address which is being approved to spend StableToken.\n@param value The increment of the amount of StableToken approved to the spender.\n@return True if the transaction succeeds.",
+ "id": 43686,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 43638,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43637,
+ "name": "updateInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43419,
+ "src": "6549:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "6549:21:137"
+ }
+ ],
+ "name": "increaseAllowance",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43636,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43633,
+ "name": "spender",
+ "nodeType": "VariableDeclaration",
+ "scope": 43686,
+ "src": "6500:15:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43632,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "6500:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43635,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 43686,
+ "src": "6517:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43634,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "6517:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6499:32:137"
+ },
+ "returnParameters": {
+ "id": 43641,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43640,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43686,
+ "src": "6584:4:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 43639,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "6584:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6583:6:137"
+ },
+ "scope": 44644,
+ "src": "6473:415:137",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 43731,
+ "nodeType": "Block",
+ "src": "7287:214:137",
+ "statements": [
+ {
+ "assignments": [
+ 43698
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 43698,
+ "name": "oldValue",
+ "nodeType": "VariableDeclaration",
+ "scope": 43731,
+ "src": "7293:16:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43697,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "7293:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 43705,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43699,
+ "name": "allowed",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43360,
+ "src": "7312:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ }
+ },
+ "id": 43702,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43700,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "7320:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43701,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "7320:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "7312:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 43704,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 43703,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43688,
+ "src": "7332:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "7312:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "7293:47:137"
+ },
+ {
+ "assignments": [
+ 43707
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 43707,
+ "name": "newValue",
+ "nodeType": "VariableDeclaration",
+ "scope": 43731,
+ "src": "7346:16:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43706,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "7346:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 43712,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43710,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43690,
+ "src": "7378:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43708,
+ "name": "oldValue",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43698,
+ "src": "7365:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43709,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46188,
+ "src": "7365:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 43711,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7365:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "7346:38:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43720,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43713,
+ "name": "allowed",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43360,
+ "src": "7390:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ }
+ },
+ "id": 43717,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43714,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "7398:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43715,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "7398:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "7390:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 43718,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 43716,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43688,
+ "src": "7410:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "7390:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43719,
+ "name": "newValue",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43707,
+ "src": "7421:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "7390:39:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43721,
+ "nodeType": "ExpressionStatement",
+ "src": "7390:39:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43723,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "7449:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43724,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "7449:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43725,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43688,
+ "src": "7461:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43726,
+ "name": "newValue",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43707,
+ "src": "7470:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43722,
+ "name": "Approval",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 46923,
+ "src": "7440:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,address,uint256)"
+ }
+ },
+ "id": 43727,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7440:39:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43728,
+ "nodeType": "EmitStatement",
+ "src": "7435:44:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 43729,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "7492:4:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 43696,
+ "id": 43730,
+ "nodeType": "Return",
+ "src": "7485:11:137"
+ }
+ ]
+ },
+ "documentation": "@notice Decrease the allowance of another user.\n@param spender The address which is being approved to spend StableToken.\n@param value The decrement of the amount of StableToken approved to the spender.\n@return True if the transaction succeeds.",
+ "id": 43732,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 43693,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43692,
+ "name": "updateInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43419,
+ "src": "7244:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "7244:21:137"
+ }
+ ],
+ "name": "decreaseAllowance",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43691,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43688,
+ "name": "spender",
+ "nodeType": "VariableDeclaration",
+ "scope": 43732,
+ "src": "7195:15:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43687,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "7195:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43690,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 43732,
+ "src": "7212:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43689,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "7212:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "7194:32:137"
+ },
+ "returnParameters": {
+ "id": 43696,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43695,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43732,
+ "src": "7279:4:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 43694,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "7279:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "7278:6:137"
+ },
+ "scope": 44644,
+ "src": "7168:333:137",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 43770,
+ "nodeType": "Block",
+ "src": "7885:193:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 43748,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43744,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43734,
+ "src": "7899:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43746,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "7918:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 43745,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "7910:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 43747,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7910:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "7899:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "72657365727665642061646472657373203078302063616e6e6f74206861766520616c6c6f77616e6365",
+ "id": 43749,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "7922:44:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_7de671b6ae78fe029c902b607a4a45ad03a25299ef0bdb1be389a1507e42c853",
+ "typeString": "literal_string \"reserved address 0x0 cannot have allowance\""
+ },
+ "value": "reserved address 0x0 cannot have allowance"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_7de671b6ae78fe029c902b607a4a45ad03a25299ef0bdb1be389a1507e42c853",
+ "typeString": "literal_string \"reserved address 0x0 cannot have allowance\""
+ }
+ ],
+ "id": 43743,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "7891:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43750,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7891:76:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43751,
+ "nodeType": "ExpressionStatement",
+ "src": "7891:76:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43759,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43752,
+ "name": "allowed",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43360,
+ "src": "7973:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ }
+ },
+ "id": 43756,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43753,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "7981:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43754,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "7981:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "7973:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 43757,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 43755,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43734,
+ "src": "7993:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "7973:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43758,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43736,
+ "src": "8004:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "7973:36:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43760,
+ "nodeType": "ExpressionStatement",
+ "src": "7973:36:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43762,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "8029:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43763,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8029:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43764,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43734,
+ "src": "8041:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43765,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43736,
+ "src": "8050:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43761,
+ "name": "Approval",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 46923,
+ "src": "8020:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,address,uint256)"
+ }
+ },
+ "id": 43766,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8020:36:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43767,
+ "nodeType": "EmitStatement",
+ "src": "8015:41:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 43768,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8069:4:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 43742,
+ "id": 43769,
+ "nodeType": "Return",
+ "src": "8062:11:137"
+ }
+ ]
+ },
+ "documentation": "@notice Approve a user to transfer StableToken on behalf of another user.\n@param spender The address which is being approved to spend StableToken.\n@param value The amount of StableToken approved to the spender.\n@return True if the transaction succeeds.",
+ "id": 43771,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 43739,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43738,
+ "name": "updateInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43419,
+ "src": "7848:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "7848:21:137"
+ }
+ ],
+ "name": "approve",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43737,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43734,
+ "name": "spender",
+ "nodeType": "VariableDeclaration",
+ "scope": 43771,
+ "src": "7807:15:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43733,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "7807:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43736,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 43771,
+ "src": "7824:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43735,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "7824:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "7806:32:137"
+ },
+ "returnParameters": {
+ "id": 43742,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43741,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43771,
+ "src": "7879:4:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 43740,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "7879:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "7878:6:137"
+ },
+ "scope": 44644,
+ "src": "7790:288:137",
+ "stateMutability": "nonpayable",
+ "superFunction": 46896,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 43815,
+ "nodeType": "Block",
+ "src": "8344:312:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 43806,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 43798,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 43790,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43783,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "8365:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43784,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8365:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 43787,
+ "name": "getExchangeRegistryId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44219,
+ "src": "8407:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
+ "typeString": "function () view returns (bytes32)"
+ }
+ },
+ "id": 43788,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8407:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43785,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8371,
+ "src": "8379:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IRegistry_$9598",
+ "typeString": "contract IRegistry"
+ }
+ },
+ "id": 43786,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getAddressForOrDie",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 9566,
+ "src": "8379:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (bytes32) view external returns (address)"
+ }
+ },
+ "id": 43789,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8379:52:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "8365:66:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 43797,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43791,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "8443:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43792,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8443:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43795,
+ "name": "VALIDATORS_REGISTRY_ID",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8369,
+ "src": "8480:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43793,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8371,
+ "src": "8457:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IRegistry_$9598",
+ "typeString": "contract IRegistry"
+ }
+ },
+ "id": 43794,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getAddressFor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 9573,
+ "src": "8457:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (bytes32) view external returns (address)"
+ }
+ },
+ "id": 43796,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8457:46:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "8443:60:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "8365:138:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 43805,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43799,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "8515:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43800,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8515:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43803,
+ "name": "GRANDA_MENTO_REGISTRY_ID",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43342,
+ "src": "8552:24:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43801,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8371,
+ "src": "8529:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IRegistry_$9598",
+ "typeString": "contract IRegistry"
+ }
+ },
+ "id": 43802,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getAddressFor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 9573,
+ "src": "8529:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (bytes32) view external returns (address)"
+ }
+ },
+ "id": 43804,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8529:48:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "8515:62:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "8365:212:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "53656e646572206e6f7420617574686f72697a656420746f206d696e74",
+ "id": 43807,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8585:31:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3737503fe6cc6878a4dddaff8d014dad7e24b67dfad3278c7f32e6e17e23e5fa",
+ "typeString": "literal_string \"Sender not authorized to mint\""
+ },
+ "value": "Sender not authorized to mint"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3737503fe6cc6878a4dddaff8d014dad7e24b67dfad3278c7f32e6e17e23e5fa",
+ "typeString": "literal_string \"Sender not authorized to mint\""
+ }
+ ],
+ "id": 43782,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "8350:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43808,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8350:272:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43809,
+ "nodeType": "ExpressionStatement",
+ "src": "8350:272:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43811,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43773,
+ "src": "8641:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43812,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43775,
+ "src": "8645:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43810,
+ "name": "_mint",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43878,
+ "src": "8635:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (address,uint256) returns (bool)"
+ }
+ },
+ "id": 43813,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8635:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 43781,
+ "id": 43814,
+ "nodeType": "Return",
+ "src": "8628:23:137"
+ }
+ ]
+ },
+ "documentation": "@notice Mints new StableToken and gives it to 'to'.\n@param to The account for which to mint tokens.\n@param value The amount of StableToken to mint.",
+ "id": 43816,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 43778,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43777,
+ "name": "updateInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43419,
+ "src": "8307:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "8307:21:137"
+ }
+ ],
+ "name": "mint",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43776,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43773,
+ "name": "to",
+ "nodeType": "VariableDeclaration",
+ "scope": 43816,
+ "src": "8271:10:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43772,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "8271:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43775,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 43816,
+ "src": "8283:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43774,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "8283:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "8270:27:137"
+ },
+ "returnParameters": {
+ "id": 43781,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43780,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43816,
+ "src": "8338:4:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 43779,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "8338:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "8337:6:137"
+ },
+ "scope": 44644,
+ "src": "8257:399:137",
+ "stateMutability": "nonpayable",
+ "superFunction": 45335,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 43877,
+ "nodeType": "Block",
+ "src": "8900:323:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 43830,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43826,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43818,
+ "src": "8914:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43828,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8928:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 43827,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "8920:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 43829,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8920:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "8914:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "3020697320612072657365727665642061646472657373",
+ "id": 43831,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8932:25:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_878e7ba3f3409c291a727d099ef15162972b4804c774d0c483b902d05a3f971a",
+ "typeString": "literal_string \"0 is a reserved address\""
+ },
+ "value": "0 is a reserved address"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_878e7ba3f3409c291a727d099ef15162972b4804c774d0c483b902d05a3f971a",
+ "typeString": "literal_string \"0 is a reserved address\""
+ }
+ ],
+ "id": 43825,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "8906:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43832,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8906:52:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43833,
+ "nodeType": "ExpressionStatement",
+ "src": "8906:52:137"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 43836,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43834,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43820,
+ "src": "8968:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43835,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8977:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "8968:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 43840,
+ "nodeType": "IfStatement",
+ "src": "8964:42:137",
+ "trueBody": {
+ "id": 43839,
+ "nodeType": "Block",
+ "src": "8980:26:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 43837,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8995:4:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 43824,
+ "id": 43838,
+ "nodeType": "Return",
+ "src": "8988:11:137"
+ }
+ ]
+ }
+ },
+ {
+ "assignments": [
+ 43842
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 43842,
+ "name": "units",
+ "nodeType": "VariableDeclaration",
+ "scope": 43877,
+ "src": "9012:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43841,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "9012:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 43848,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43844,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "9042:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43845,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "9042:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43846,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43820,
+ "src": "9065:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43843,
+ "name": "_valueToUnits",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44268,
+ "src": "9028:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 43847,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9028:43:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "9012:59:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43854,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 43849,
+ "name": "totalSupply_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43354,
+ "src": "9077:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43852,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43842,
+ "src": "9109:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43850,
+ "name": "totalSupply_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43354,
+ "src": "9092:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43851,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "9092:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 43853,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9092:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "9077:38:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43855,
+ "nodeType": "ExpressionStatement",
+ "src": "9077:38:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43865,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43856,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "9121:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 43858,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 43857,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43818,
+ "src": "9130:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "9121:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43863,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43842,
+ "src": "9153:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43859,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "9136:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 43861,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 43860,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43818,
+ "src": "9145:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "9136:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43862,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "9136:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 43864,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9136:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "9121:38:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43866,
+ "nodeType": "ExpressionStatement",
+ "src": "9121:38:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43869,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "9187:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 43868,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "9179:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 43870,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9179:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43871,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43818,
+ "src": "9191:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43872,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43820,
+ "src": "9195:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43867,
+ "name": "Transfer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 43330
+ ],
+ "referencedDeclaration": 43330,
+ "src": "9170:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,address,uint256)"
+ }
+ },
+ "id": 43873,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9170:31:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43874,
+ "nodeType": "EmitStatement",
+ "src": "9165:36:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 43875,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "9214:4:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 43824,
+ "id": 43876,
+ "nodeType": "Return",
+ "src": "9207:11:137"
+ }
+ ]
+ },
+ "documentation": "@notice Mints new StableToken and gives it to 'to'.\n@param to The account for which to mint tokens.\n@param value The amount of StableToken to mint.",
+ "id": 43878,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "_mint",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43821,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43818,
+ "name": "to",
+ "nodeType": "VariableDeclaration",
+ "scope": 43878,
+ "src": "8850:10:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43817,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "8850:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43820,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 43878,
+ "src": "8862:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43819,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "8862:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "8849:27:137"
+ },
+ "returnParameters": {
+ "id": 43824,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43823,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43878,
+ "src": "8894:4:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 43822,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "8894:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "8893:6:137"
+ },
+ "scope": 44644,
+ "src": "8835:388:137",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "private"
+ },
+ {
+ "body": {
+ "id": 43906,
+ "nodeType": "Block",
+ "src": "9634:104:137",
+ "statements": [
+ {
+ "assignments": [
+ 43894
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 43894,
+ "name": "succeeded",
+ "nodeType": "VariableDeclaration",
+ "scope": 43906,
+ "src": "9640:14:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 43893,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "9640:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 43899,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43896,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43880,
+ "src": "9666:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43897,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43882,
+ "src": "9670:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43895,
+ "name": "transfer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44402,
+ "src": "9657:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (address,uint256) returns (bool)"
+ }
+ },
+ "id": 43898,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9657:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "9640:36:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43901,
+ "name": "comment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43884,
+ "src": "9703:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ ],
+ "id": 43900,
+ "name": "TransferComment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43334,
+ "src": "9687:15:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (string memory)"
+ }
+ },
+ "id": 43902,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9687:24:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43903,
+ "nodeType": "EmitStatement",
+ "src": "9682:29:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43904,
+ "name": "succeeded",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43894,
+ "src": "9724:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 43892,
+ "id": 43905,
+ "nodeType": "Return",
+ "src": "9717:16:137"
+ }
+ ]
+ },
+ "documentation": "@notice Transfer token for a specified address\n@param to The address to transfer to.\n@param value The amount to be transferred.\n@param comment The transfer comment.\n@return True if the transaction succeeds.",
+ "id": 43907,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 43887,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43886,
+ "name": "updateInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43419,
+ "src": "9569:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "9569:21:137"
+ },
+ {
+ "arguments": null,
+ "id": 43889,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43888,
+ "name": "onlyWhenNotFrozen",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3631,
+ "src": "9595:17:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "9595:17:137"
+ }
+ ],
+ "name": "transferWithComment",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43885,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43880,
+ "name": "to",
+ "nodeType": "VariableDeclaration",
+ "scope": 43907,
+ "src": "9500:10:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43879,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "9500:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43882,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 43907,
+ "src": "9512:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43881,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "9512:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43884,
+ "name": "comment",
+ "nodeType": "VariableDeclaration",
+ "scope": 43907,
+ "src": "9527:23:137",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 43883,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "9527:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "9499:52:137"
+ },
+ "returnParameters": {
+ "id": 43892,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43891,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43907,
+ "src": "9626:4:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 43890,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "9626:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "9625:6:137"
+ },
+ "scope": 44644,
+ "src": "9471:267:137",
+ "stateMutability": "nonpayable",
+ "superFunction": 9394,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 43985,
+ "nodeType": "Block",
+ "src": "9945:527:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 43932,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 43924,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43917,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "9966:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43918,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "9966:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 43921,
+ "name": "getExchangeRegistryId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44219,
+ "src": "10008:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
+ "typeString": "function () view returns (bytes32)"
+ }
+ },
+ "id": 43922,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10008:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43919,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8371,
+ "src": "9980:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IRegistry_$9598",
+ "typeString": "contract IRegistry"
+ }
+ },
+ "id": 43920,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getAddressForOrDie",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 9566,
+ "src": "9980:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (bytes32) view external returns (address)"
+ }
+ },
+ "id": 43923,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9980:52:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "9966:66:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 43931,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43925,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "10044:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43926,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10044:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43929,
+ "name": "GRANDA_MENTO_REGISTRY_ID",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43342,
+ "src": "10081:24:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43927,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8371,
+ "src": "10058:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IRegistry_$9598",
+ "typeString": "contract IRegistry"
+ }
+ },
+ "id": 43928,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getAddressFor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 9573,
+ "src": "10058:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (bytes32) view external returns (address)"
+ }
+ },
+ "id": 43930,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10058:48:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "10044:62:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "9966:140:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "53656e646572206e6f7420617574686f72697a656420746f206275726e",
+ "id": 43933,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10114:31:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_d67ba2d7c0ccfeb3def0e326717659a00695ee5054ea650f29641323d243a49d",
+ "typeString": "literal_string \"Sender not authorized to burn\""
+ },
+ "value": "Sender not authorized to burn"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_d67ba2d7c0ccfeb3def0e326717659a00695ee5054ea650f29641323d243a49d",
+ "typeString": "literal_string \"Sender not authorized to burn\""
+ }
+ ],
+ "id": 43916,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "9951:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43934,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9951:200:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43935,
+ "nodeType": "ExpressionStatement",
+ "src": "9951:200:137"
+ },
+ {
+ "assignments": [
+ 43937
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 43937,
+ "name": "units",
+ "nodeType": "VariableDeclaration",
+ "scope": 43985,
+ "src": "10157:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43936,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "10157:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 43943,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43939,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "10187:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43940,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "10187:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43941,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43909,
+ "src": "10210:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43938,
+ "name": "_valueToUnits",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44268,
+ "src": "10173:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 43942,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10173:43:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "10157:59:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 43950,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43945,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43937,
+ "src": "10230:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43946,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "10239:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 43949,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43947,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "10248:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43948,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10248:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "10239:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "10230:29:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "76616c75652065786365656465642062616c616e6365206f662073656e646572",
+ "id": 43951,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10261:34:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_f643947651ac946f0f7de0ae2caa7ea5b3b2d9acb4d86798e4d8321e4be4c83c",
+ "typeString": "literal_string \"value exceeded balance of sender\""
+ },
+ "value": "value exceeded balance of sender"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_f643947651ac946f0f7de0ae2caa7ea5b3b2d9acb4d86798e4d8321e4be4c83c",
+ "typeString": "literal_string \"value exceeded balance of sender\""
+ }
+ ],
+ "id": 43944,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "10222:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43952,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10222:74:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43953,
+ "nodeType": "ExpressionStatement",
+ "src": "10222:74:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43959,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 43954,
+ "name": "totalSupply_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43354,
+ "src": "10302:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43957,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43937,
+ "src": "10334:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43955,
+ "name": "totalSupply_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43354,
+ "src": "10317:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43956,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46188,
+ "src": "10317:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 43958,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10317:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "10302:38:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43960,
+ "nodeType": "ExpressionStatement",
+ "src": "10302:38:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43972,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43961,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "10346:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 43964,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43962,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "10355:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43963,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10355:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "10346:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43970,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43937,
+ "src": "10394:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43965,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "10369:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 43968,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43966,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "10378:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43967,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10378:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "10369:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43969,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46188,
+ "src": "10369:24:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 43971,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10369:31:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "10346:54:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43973,
+ "nodeType": "ExpressionStatement",
+ "src": "10346:54:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43975,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "10420:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43976,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10420:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43978,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10440:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 43977,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "10432:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 43979,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10432:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43980,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43937,
+ "src": "10444:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43974,
+ "name": "Transfer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 43330
+ ],
+ "referencedDeclaration": 43330,
+ "src": "10411:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,address,uint256)"
+ }
+ },
+ "id": 43981,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10411:39:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43982,
+ "nodeType": "EmitStatement",
+ "src": "10406:44:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 43983,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10463:4:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 43915,
+ "id": 43984,
+ "nodeType": "Return",
+ "src": "10456:11:137"
+ }
+ ]
+ },
+ "documentation": "@notice Burns StableToken from the balance of msg.sender.\n@param value The amount of StableToken to burn.",
+ "id": 43986,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 43912,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43911,
+ "name": "updateInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43419,
+ "src": "9908:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "9908:21:137"
+ }
+ ],
+ "name": "burn",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43910,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43909,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 43986,
+ "src": "9884:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43908,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "9884:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "9883:15:137"
+ },
+ "returnParameters": {
+ "id": 43915,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43914,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43986,
+ "src": "9939:4:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 43913,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "9939:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "9938:6:137"
+ },
+ "scope": 44644,
+ "src": "9870:602:137",
+ "stateMutability": "nonpayable",
+ "superFunction": 45342,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44086,
+ "nodeType": "Block",
+ "src": "10935:573:137",
+ "statements": [
+ {
+ "assignments": [
+ 44002
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44002,
+ "name": "units",
+ "nodeType": "VariableDeclaration",
+ "scope": 44086,
+ "src": "10941:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44001,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "10941:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44008,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44004,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "10971:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44005,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "10971:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44006,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43992,
+ "src": "10994:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44003,
+ "name": "_valueToUnits",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44268,
+ "src": "10957:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44007,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10957:43:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "10941:59:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 44014,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 44010,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43990,
+ "src": "11014:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 44012,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11028:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 44011,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "11020:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 44013,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11020:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "11014:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "7472616e7366657220617474656d7074656420746f207265736572766564206164647265737320307830",
+ "id": 44015,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11032:44:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_d70e6696a6c0b4643ee1ebae9ec096136ed54277bf37d57ae5b5cfc09b48d8e8",
+ "typeString": "literal_string \"transfer attempted to reserved address 0x0\""
+ },
+ "value": "transfer attempted to reserved address 0x0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_d70e6696a6c0b4643ee1ebae9ec096136ed54277bf37d57ae5b5cfc09b48d8e8",
+ "typeString": "literal_string \"transfer attempted to reserved address 0x0\""
+ }
+ ],
+ "id": 44009,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "11006:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 44016,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11006:71:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44017,
+ "nodeType": "ExpressionStatement",
+ "src": "11006:71:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 44023,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 44019,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44002,
+ "src": "11091:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44020,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "11100:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44022,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44021,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43988,
+ "src": "11109:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11100:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "11091:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "7472616e736665722076616c75652065786365656465642062616c616e6365206f662073656e646572",
+ "id": 44024,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11116:43:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_993a5b9c92acf262ea69aa9bd83d497a43d16d43273a37ad498a45ebc1a76158",
+ "typeString": "literal_string \"transfer value exceeded balance of sender\""
+ },
+ "value": "transfer value exceeded balance of sender"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_993a5b9c92acf262ea69aa9bd83d497a43d16d43273a37ad498a45ebc1a76158",
+ "typeString": "literal_string \"transfer value exceeded balance of sender\""
+ }
+ ],
+ "id": 44018,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "11083:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 44025,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11083:77:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44026,
+ "nodeType": "ExpressionStatement",
+ "src": "11083:77:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 44035,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 44028,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43992,
+ "src": "11181:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44029,
+ "name": "allowed",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43360,
+ "src": "11190:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ }
+ },
+ "id": 44031,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44030,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43988,
+ "src": "11198:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11190:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44034,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44032,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "11204:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 44033,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11204:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11190:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "11181:34:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "7472616e736665722076616c75652065786365656465642073656e646572277320616c6c6f77616e636520666f7220726563697069656e74",
+ "id": 44036,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11223:58:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_a0229c57ce32ed84917ea2237a54d8faf8f0feabfcfed0ba102b766722b05fc5",
+ "typeString": "literal_string \"transfer value exceeded sender's allowance for recipient\""
+ },
+ "value": "transfer value exceeded sender's allowance for recipient"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_a0229c57ce32ed84917ea2237a54d8faf8f0feabfcfed0ba102b766722b05fc5",
+ "typeString": "literal_string \"transfer value exceeded sender's allowance for recipient\""
+ }
+ ],
+ "id": 44027,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "11166:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 44037,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11166:121:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44038,
+ "nodeType": "ExpressionStatement",
+ "src": "11166:121:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44048,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44039,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "11294:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44041,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44040,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43990,
+ "src": "11303:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "11294:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44046,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44002,
+ "src": "11326:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44042,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "11309:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44044,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44043,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43990,
+ "src": "11318:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11309:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44045,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "11309:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44047,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11309:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "11294:38:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44049,
+ "nodeType": "ExpressionStatement",
+ "src": "11294:38:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44059,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44050,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "11338:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44052,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44051,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43988,
+ "src": "11347:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "11338:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44057,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44002,
+ "src": "11374:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44053,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "11355:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44055,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44054,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43988,
+ "src": "11364:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11355:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44056,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46188,
+ "src": "11355:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44058,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11355:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "11338:42:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44060,
+ "nodeType": "ExpressionStatement",
+ "src": "11338:42:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44076,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44061,
+ "name": "allowed",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43360,
+ "src": "11386:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ }
+ },
+ "id": 44065,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44062,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43988,
+ "src": "11394:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11386:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44066,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44063,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "11400:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 44064,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11400:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "11386:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44074,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43992,
+ "src": "11444:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44067,
+ "name": "allowed",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43360,
+ "src": "11414:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ }
+ },
+ "id": 44069,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44068,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43988,
+ "src": "11422:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11414:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44072,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44070,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "11428:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 44071,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11428:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11414:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44073,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46188,
+ "src": "11414:29:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44075,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11414:36:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "11386:64:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44077,
+ "nodeType": "ExpressionStatement",
+ "src": "11386:64:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44079,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43988,
+ "src": "11470:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44080,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43990,
+ "src": "11476:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44081,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43992,
+ "src": "11480:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44078,
+ "name": "Transfer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 43330
+ ],
+ "referencedDeclaration": 43330,
+ "src": "11461:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,address,uint256)"
+ }
+ },
+ "id": 44082,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11461:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44083,
+ "nodeType": "EmitStatement",
+ "src": "11456:30:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 44084,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11499:4:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 44000,
+ "id": 44085,
+ "nodeType": "Return",
+ "src": "11492:11:137"
+ }
+ ]
+ },
+ "documentation": "@notice Transfers StableToken from one address to another on behalf of a user.\n@param from The address to transfer StableToken from.\n@param to The address to transfer StableToken to.\n@param value The amount of StableToken to transfer.\n@return True if the transaction succeeds.",
+ "id": 44087,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 43995,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43994,
+ "name": "updateInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43419,
+ "src": "10870:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "10870:21:137"
+ },
+ {
+ "arguments": null,
+ "id": 43997,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43996,
+ "name": "onlyWhenNotFrozen",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3631,
+ "src": "10896:17:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "10896:17:137"
+ }
+ ],
+ "name": "transferFrom",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43993,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43988,
+ "name": "from",
+ "nodeType": "VariableDeclaration",
+ "scope": 44087,
+ "src": "10812:12:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43987,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "10812:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43990,
+ "name": "to",
+ "nodeType": "VariableDeclaration",
+ "scope": 44087,
+ "src": "10826:10:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43989,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "10826:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43992,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 44087,
+ "src": "10838:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43991,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "10838:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "10811:41:137"
+ },
+ "returnParameters": {
+ "id": 44000,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43999,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44087,
+ "src": "10927:4:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 43998,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "10927:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "10926:6:137"
+ },
+ "scope": 44644,
+ "src": "10790:718:137",
+ "stateMutability": "nonpayable",
+ "superFunction": 46907,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44094,
+ "nodeType": "Block",
+ "src": "11621:23:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44092,
+ "name": "name_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43344,
+ "src": "11634:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "functionReturnParameters": 44091,
+ "id": 44093,
+ "nodeType": "Return",
+ "src": "11627:12:137"
+ }
+ ]
+ },
+ "documentation": "@return The name of the stable token.",
+ "id": 44095,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "name",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44088,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "11580:2:137"
+ },
+ "returnParameters": {
+ "id": 44091,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44090,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44095,
+ "src": "11606:13:137",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 44089,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "11606:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "11605:15:137"
+ },
+ "scope": 44644,
+ "src": "11567:77:137",
+ "stateMutability": "view",
+ "superFunction": 9399,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44102,
+ "nodeType": "Block",
+ "src": "11761:25:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44100,
+ "name": "symbol_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43346,
+ "src": "11774:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "functionReturnParameters": 44099,
+ "id": 44101,
+ "nodeType": "Return",
+ "src": "11767:14:137"
+ }
+ ]
+ },
+ "documentation": "@return The symbol of the stable token.",
+ "id": 44103,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "symbol",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44096,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "11720:2:137"
+ },
+ "returnParameters": {
+ "id": 44099,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44098,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44103,
+ "src": "11746:13:137",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 44097,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "11746:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "11745:15:137"
+ },
+ "scope": 44644,
+ "src": "11705:81:137",
+ "stateMutability": "view",
+ "superFunction": 9404,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44110,
+ "nodeType": "Block",
+ "src": "11929:27:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44108,
+ "name": "decimals_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43348,
+ "src": "11942:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "functionReturnParameters": 44107,
+ "id": 44109,
+ "nodeType": "Return",
+ "src": "11935:16:137"
+ }
+ ]
+ },
+ "documentation": "@return The number of decimal places to which StableToken is divisible.",
+ "id": 44111,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "decimals",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44104,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "11896:2:137"
+ },
+ "returnParameters": {
+ "id": 44107,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44106,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44111,
+ "src": "11922:5:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 44105,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "11922:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "11921:7:137"
+ },
+ "scope": 44644,
+ "src": "11879:77:137",
+ "stateMutability": "view",
+ "superFunction": 9409,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44126,
+ "nodeType": "Block",
+ "src": "12328:48:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44120,
+ "name": "allowed",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43360,
+ "src": "12341:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ }
+ },
+ "id": 44122,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44121,
+ "name": "accountOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44113,
+ "src": "12349:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12341:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44124,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44123,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44115,
+ "src": "12363:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12341:30:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 44119,
+ "id": 44125,
+ "nodeType": "Return",
+ "src": "12334:37:137"
+ }
+ ]
+ },
+ "documentation": "@notice Gets the amount of owner's StableToken allowed to be spent by spender.\n@param accountOwner The owner of the StableToken.\n@param spender The spender of the StableToken.\n@return The amount of StableToken owner is allowing spender to spend.",
+ "id": 44127,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "allowance",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44116,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44113,
+ "name": "accountOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 44127,
+ "src": "12257:20:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44112,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "12257:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44115,
+ "name": "spender",
+ "nodeType": "VariableDeclaration",
+ "scope": 44127,
+ "src": "12279:15:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44114,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "12279:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "12256:39:137"
+ },
+ "returnParameters": {
+ "id": 44119,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44118,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44127,
+ "src": "12319:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44117,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12319:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "12318:9:137"
+ },
+ "scope": 44644,
+ "src": "12238:138:137",
+ "stateMutability": "view",
+ "superFunction": 46887,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44140,
+ "nodeType": "Block",
+ "src": "12678:54:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44135,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "12704:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44137,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44136,
+ "name": "accountOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44129,
+ "src": "12713:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12704:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44134,
+ "name": "unitsToValue",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44248,
+ "src": "12691:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (uint256) view returns (uint256)"
+ }
+ },
+ "id": 44138,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12691:36:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 44133,
+ "id": 44139,
+ "nodeType": "Return",
+ "src": "12684:43:137"
+ }
+ ]
+ },
+ "documentation": "@notice Gets the balance of the specified address using the presently stored inflation factor.\n@param accountOwner The address to query the balance of.\n@return The balance of the specified address.",
+ "id": 44141,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "balanceOf",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44130,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44129,
+ "name": "accountOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 44141,
+ "src": "12624:20:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44128,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "12624:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "12623:22:137"
+ },
+ "returnParameters": {
+ "id": 44133,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44132,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44141,
+ "src": "12669:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44131,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12669:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "12668:9:137"
+ },
+ "scope": 44644,
+ "src": "12605:127:137",
+ "stateMutability": "view",
+ "superFunction": 46869,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44150,
+ "nodeType": "Block",
+ "src": "12930:44:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44147,
+ "name": "totalSupply_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43354,
+ "src": "12956:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44146,
+ "name": "unitsToValue",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44248,
+ "src": "12943:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (uint256) view returns (uint256)"
+ }
+ },
+ "id": 44148,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12943:26:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 44145,
+ "id": 44149,
+ "nodeType": "Return",
+ "src": "12936:33:137"
+ }
+ ]
+ },
+ "documentation": "@return The total value of StableToken in existence\n@dev Though totalSupply_ is stored in units, this returns value.",
+ "id": 44151,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "totalSupply",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44142,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "12895:2:137"
+ },
+ "returnParameters": {
+ "id": 44145,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44144,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44151,
+ "src": "12921:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44143,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12921:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "12920:9:137"
+ },
+ "scope": 44644,
+ "src": "12875:99:137",
+ "stateMutability": "view",
+ "superFunction": 46862,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44176,
+ "nodeType": "Block",
+ "src": "13218:173:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44162,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "13239:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44163,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "rate",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43362,
+ "src": "13239:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "id": 44164,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unwrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3055,
+ "src": "13239:26:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)"
+ }
+ },
+ "id": 44165,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13239:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44166,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "13275:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44167,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "13275:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "id": 44168,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unwrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3055,
+ "src": "13275:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)"
+ }
+ },
+ "id": 44169,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13275:30:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44170,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "13313:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44171,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "updatePeriod",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43366,
+ "src": "13313:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44172,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "13348:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44173,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factorLastUpdated",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43368,
+ "src": "13348:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 44174,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "13231:155:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
+ "typeString": "tuple(uint256,uint256,uint256,uint256)"
+ }
+ },
+ "functionReturnParameters": 44161,
+ "id": 44175,
+ "nodeType": "Return",
+ "src": "13224:162:137"
+ }
+ ]
+ },
+ "documentation": "@notice gets inflation parameters.\n@return rate\n@return factor\n@return updatePeriod\n@return factorLastUpdated",
+ "id": 44177,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getInflationParameters",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44152,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "13156:2:137"
+ },
+ "returnParameters": {
+ "id": 44161,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44154,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44177,
+ "src": "13182:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44153,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "13182:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44156,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44177,
+ "src": "13191:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44155,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "13191:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44158,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44177,
+ "src": "13200:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44157,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "13200:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44160,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44177,
+ "src": "13209:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44159,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "13209:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "13181:36:137"
+ },
+ "scope": 44644,
+ "src": "13125:266:137",
+ "stateMutability": "view",
+ "superFunction": 45374,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44200,
+ "nodeType": "Block",
+ "src": "13843:181:137",
+ "statements": [
+ {
+ "assignments": [
+ 44187
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44187,
+ "name": "updatedInflationFactor",
+ "nodeType": "VariableDeclaration",
+ "scope": 44200,
+ "src": "13849:50:137",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 44186,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "13849:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44188,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "13849:50:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44193,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 44189,
+ "name": "updatedInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44187,
+ "src": "13907:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ null
+ ],
+ "id": 44190,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "TupleExpression",
+ "src": "13906:26:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$__$",
+ "typeString": "tuple(struct FixidityLib.Fraction memory,)"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 44191,
+ "name": "getUpdatedInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44383,
+ "src": "13935:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$",
+ "typeString": "function () view returns (struct FixidityLib.Fraction memory,uint256)"
+ }
+ },
+ "id": 44192,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13935:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$",
+ "typeString": "tuple(struct FixidityLib.Fraction memory,uint256)"
+ }
+ },
+ "src": "13906:56:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44194,
+ "nodeType": "ExpressionStatement",
+ "src": "13906:56:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44196,
+ "name": "updatedInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44187,
+ "src": "13989:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44197,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44179,
+ "src": "14013:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44195,
+ "name": "_valueToUnits",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44268,
+ "src": "13975:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44198,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13975:44:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 44183,
+ "id": 44199,
+ "nodeType": "Return",
+ "src": "13968:51:137"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the units for a given value given the current inflation factor.\n@param value The value to convert to units.\n@return The units corresponding to `value` given the current inflation factor.\n@dev We don't compute the updated inflationFactor here because\nwe assume any function calling this will have updated the inflation factor.",
+ "id": 44201,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "valueToUnits",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44180,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44179,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 44201,
+ "src": "13796:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44178,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "13796:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "13795:15:137"
+ },
+ "returnParameters": {
+ "id": 44183,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44182,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44201,
+ "src": "13834:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44181,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "13834:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "13833:9:137"
+ },
+ "scope": 44644,
+ "src": "13774:250:137",
+ "stateMutability": "view",
+ "superFunction": 45356,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44218,
+ "nodeType": "Block",
+ "src": "14673:136:137",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 44210,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 44206,
+ "name": "exchangeRegistryId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43373,
+ "src": "14683:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 44208,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "14713:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 44207,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "14705:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_bytes32_$",
+ "typeString": "type(bytes32)"
+ },
+ "typeName": "bytes32"
+ },
+ "id": 44209,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14705:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "14683:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "id": 44216,
+ "nodeType": "Block",
+ "src": "14765:40:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44214,
+ "name": "exchangeRegistryId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43373,
+ "src": "14780:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "functionReturnParameters": 44205,
+ "id": 44215,
+ "nodeType": "Return",
+ "src": "14773:25:137"
+ }
+ ]
+ },
+ "id": 44217,
+ "nodeType": "IfStatement",
+ "src": "14679:126:137",
+ "trueBody": {
+ "id": 44213,
+ "nodeType": "Block",
+ "src": "14717:42:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44211,
+ "name": "EXCHANGE_REGISTRY_ID",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8281,
+ "src": "14732:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "functionReturnParameters": 44205,
+ "id": 44212,
+ "nodeType": "Return",
+ "src": "14725:27:137"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "documentation": "@notice Returns the exchange id in the registry of the corresponding fiat pair exchange.\n@dev When this storage is uninitialized, it falls back to the default EXCHANGE_REGISTRY_ID.\nexchangeRegistryId was introduced after the initial release of cUSD's StableToken,\nso exchangeRegistryId will be uninitialized for that contract. If cUSD's StableToken\nexchangeRegistryId were to be correctly initialized, this function could be deprecated\nin favor of using exchangeRegistryId directly.\n@return Registry id for the corresponding exchange.",
+ "id": 44219,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getExchangeRegistryId",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44202,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "14640:2:137"
+ },
+ "returnParameters": {
+ "id": 44205,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44204,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44219,
+ "src": "14664:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 44203,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "14664:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "14663:9:137"
+ },
+ "scope": 44644,
+ "src": "14610:199:137",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 44247,
+ "nodeType": "Block",
+ "src": "15119:596:137",
+ "statements": [
+ {
+ "assignments": [
+ 44229
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44229,
+ "name": "updatedInflationFactor",
+ "nodeType": "VariableDeclaration",
+ "scope": 44247,
+ "src": "15125:50:137",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 44228,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "15125:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44230,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "15125:50:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44235,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 44231,
+ "name": "updatedInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44229,
+ "src": "15183:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ null
+ ],
+ "id": 44232,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "TupleExpression",
+ "src": "15182:26:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$__$",
+ "typeString": "tuple(struct FixidityLib.Fraction memory,)"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 44233,
+ "name": "getUpdatedInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44383,
+ "src": "15211:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$",
+ "typeString": "function () view returns (struct FixidityLib.Fraction memory,uint256)"
+ }
+ },
+ "id": 44234,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15211:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$",
+ "typeString": "tuple(struct FixidityLib.Fraction memory,uint256)"
+ }
+ },
+ "src": "15182:56:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44236,
+ "nodeType": "ExpressionStatement",
+ "src": "15182:56:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44242,
+ "name": "updatedInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44229,
+ "src": "15675:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44239,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44221,
+ "src": "15661:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44237,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "15640:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 44238,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "newFixed",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3093,
+ "src": "15640:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 44240,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15640:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "id": 44241,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "divide",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3515,
+ "src": "15640:34:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_struct$_Fraction_$3011_memory_ptr_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,struct FixidityLib.Fraction memory) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 44243,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15640:58:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "id": 44244,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "fromFixed",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3106,
+ "src": "15640:68:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)"
+ }
+ },
+ "id": 44245,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15640:70:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 44225,
+ "id": 44246,
+ "nodeType": "Return",
+ "src": "15633:77:137"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the value of a given number of units given the current inflation factor.\n@param units The units to convert to value.\n@return The value corresponding to `units` given the current inflation factor.",
+ "id": 44248,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "unitsToValue",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44222,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44221,
+ "name": "units",
+ "nodeType": "VariableDeclaration",
+ "scope": 44248,
+ "src": "15074:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44220,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "15074:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "15073:15:137"
+ },
+ "returnParameters": {
+ "id": 44225,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44224,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44248,
+ "src": "15110:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44223,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "15110:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "15109:9:137"
+ },
+ "scope": 44644,
+ "src": "15052:663:137",
+ "stateMutability": "view",
+ "superFunction": 45363,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 44267,
+ "nodeType": "Block",
+ "src": "16221:83:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44261,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44252,
+ "src": "16280:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44259,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "16259:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 44260,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "newFixed",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3093,
+ "src": "16259:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 44262,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16259:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44257,
+ "name": "inflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44250,
+ "src": "16234:15:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "id": 44258,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "multiply",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3447,
+ "src": "16234:24:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_struct$_Fraction_$3011_memory_ptr_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,struct FixidityLib.Fraction memory) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 44263,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16234:53:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "id": 44264,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "fromFixed",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3106,
+ "src": "16234:63:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)"
+ }
+ },
+ "id": 44265,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16234:65:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 44256,
+ "id": 44266,
+ "nodeType": "Return",
+ "src": "16227:72:137"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the units for a given value given the current inflation factor.\n@param inflationFactor The current inflation factor.\n@param value The value to convert to units.\n@return The units corresponding to `value` given the current inflation factor.\n@dev We assume any function calling this will have updated the inflation factor.",
+ "id": 44268,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "_valueToUnits",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44253,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44250,
+ "name": "inflationFactor",
+ "nodeType": "VariableDeclaration",
+ "scope": 44268,
+ "src": "16116:43:137",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 44249,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "16116:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44252,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 44268,
+ "src": "16161:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44251,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "16161:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "16115:60:137"
+ },
+ "returnParameters": {
+ "id": 44256,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44255,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44268,
+ "src": "16210:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44254,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "16210:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "16209:9:137"
+ },
+ "scope": 44644,
+ "src": "16093:211:137",
+ "stateMutability": "pure",
+ "superFunction": null,
+ "visibility": "private"
+ },
+ {
+ "body": {
+ "id": 44382,
+ "nodeType": "Block",
+ "src": "16582:1310:137",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 44282,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 44275,
+ "name": "now",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47590,
+ "src": "16635:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44279,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "16678:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44280,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "updatePeriod",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43366,
+ "src": "16678:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44276,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "16641:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44277,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factorLastUpdated",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43368,
+ "src": "16641:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44278,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "16641:36:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44281,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16641:65:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "16635:71:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 44290,
+ "nodeType": "IfStatement",
+ "src": "16631:156:137",
+ "trueBody": {
+ "id": 44289,
+ "nodeType": "Block",
+ "src": "16708:79:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44283,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "16724:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44284,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "16724:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44285,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "16747:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44286,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factorLastUpdated",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43368,
+ "src": "16747:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 44287,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "16723:57:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_storage_$_t_uint256_$",
+ "typeString": "tuple(struct FixidityLib.Fraction storage ref,uint256)"
+ }
+ },
+ "functionReturnParameters": 44274,
+ "id": 44288,
+ "nodeType": "Return",
+ "src": "16716:64:137"
+ }
+ ]
+ }
+ },
+ {
+ "assignments": [
+ 44292
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44292,
+ "name": "numerator",
+ "nodeType": "VariableDeclaration",
+ "scope": 44382,
+ "src": "16793:17:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44291,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "16793:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44293,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "16793:17:137"
+ },
+ {
+ "assignments": [
+ 44295
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44295,
+ "name": "denominator",
+ "nodeType": "VariableDeclaration",
+ "scope": 44382,
+ "src": "16816:19:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44294,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "16816:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44296,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "16816:19:137"
+ },
+ {
+ "assignments": [
+ 44298
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44298,
+ "name": "timesToApplyInflation",
+ "nodeType": "VariableDeclaration",
+ "scope": 44382,
+ "src": "16914:29:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44297,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "16914:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44308,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44305,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "16999:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44306,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "updatePeriod",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43366,
+ "src": "16999:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44301,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "16954:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44302,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factorLastUpdated",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43368,
+ "src": "16954:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44299,
+ "name": "now",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47590,
+ "src": "16946:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44300,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46188,
+ "src": "16946:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44303,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16946:41:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44304,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "div",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46265,
+ "src": "16946:45:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44307,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16946:86:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "16914:118:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44334,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 44309,
+ "name": "numerator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44292,
+ "src": "17040:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44310,
+ "name": "denominator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44295,
+ "src": "17051:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 44311,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "TupleExpression",
+ "src": "17039:24:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
+ "typeString": "tuple(uint256,uint256)"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44313,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "17088:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44314,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "17088:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "id": 44315,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unwrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3055,
+ "src": "17088:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)"
+ }
+ },
+ "id": 44316,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17088:30:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44317,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "17126:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 44318,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "fixed1",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3032,
+ "src": "17126:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function () pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 44319,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17126:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "id": 44320,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unwrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3055,
+ "src": "17126:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)"
+ }
+ },
+ "id": 44321,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17126:29:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44322,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "17163:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44323,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "rate",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43362,
+ "src": "17163:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "id": 44324,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unwrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3055,
+ "src": "17163:26:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)"
+ }
+ },
+ "id": 44325,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17163:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44326,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "17199:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 44327,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "fixed1",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3032,
+ "src": "17199:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function () pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 44328,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17199:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "id": 44329,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unwrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3055,
+ "src": "17199:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)"
+ }
+ },
+ "id": 44330,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17199:29:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44331,
+ "name": "timesToApplyInflation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44298,
+ "src": "17236:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44332,
+ "name": "decimals_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43348,
+ "src": "17265:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ ],
+ "id": 44312,
+ "name": "fractionMulExp",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7713,
+ "src": "17066:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
+ "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) view returns (uint256,uint256)"
+ }
+ },
+ "id": 44333,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17066:214:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
+ "typeString": "tuple(uint256,uint256)"
+ }
+ },
+ "src": "17039:241:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44335,
+ "nodeType": "ExpressionStatement",
+ "src": "17039:241:137"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 44342,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 44338,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 44336,
+ "name": "numerator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44292,
+ "src": "17411:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 44337,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "17424:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "17411:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 44341,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 44339,
+ "name": "denominator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44295,
+ "src": "17429:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 44340,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "17444:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "17429:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "17411:34:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 44350,
+ "nodeType": "IfStatement",
+ "src": "17407:119:137",
+ "trueBody": {
+ "id": 44349,
+ "nodeType": "Block",
+ "src": "17447:79:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44343,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "17463:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44344,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "17463:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44345,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "17486:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44346,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factorLastUpdated",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43368,
+ "src": "17486:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 44347,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "17462:57:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_storage_$_t_uint256_$",
+ "typeString": "tuple(struct FixidityLib.Fraction storage ref,uint256)"
+ }
+ },
+ "functionReturnParameters": 44274,
+ "id": 44348,
+ "nodeType": "Return",
+ "src": "17455:64:137"
+ }
+ ]
+ }
+ },
+ {
+ "assignments": [
+ 44354
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44354,
+ "name": "currentInflationFactor",
+ "nodeType": "VariableDeclaration",
+ "scope": 44382,
+ "src": "17532:50:137",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 44353,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "17532:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44365,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44362,
+ "name": "denominator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44295,
+ "src": "17644:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44360,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "17627:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 44361,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "wrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3044,
+ "src": "17627:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 44363,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17627:29:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44357,
+ "name": "numerator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44292,
+ "src": "17602:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44355,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "17585:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 44356,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "wrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3044,
+ "src": "17585:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 44358,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17585:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "id": 44359,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "divide",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3515,
+ "src": "17585:34:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_struct$_Fraction_$3011_memory_ptr_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,struct FixidityLib.Fraction memory) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 44364,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17585:77:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "17532:130:137"
+ },
+ {
+ "assignments": [
+ 44367
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44367,
+ "name": "lastUpdated",
+ "nodeType": "VariableDeclaration",
+ "scope": 44382,
+ "src": "17668:19:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44366,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "17668:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44377,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44374,
+ "name": "timesToApplyInflation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44298,
+ "src": "17766:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44371,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "17734:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44372,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "updatePeriod",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43366,
+ "src": "17734:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44373,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "mul",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46249,
+ "src": "17734:31:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44375,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17734:54:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44368,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "17690:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44369,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factorLastUpdated",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43368,
+ "src": "17690:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44370,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "17690:36:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44376,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17690:104:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "17668:126:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 44378,
+ "name": "currentInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44354,
+ "src": "17809:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44379,
+ "name": "lastUpdated",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44367,
+ "src": "17833:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 44380,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "17808:37:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$",
+ "typeString": "tuple(struct FixidityLib.Fraction memory,uint256)"
+ }
+ },
+ "functionReturnParameters": 44274,
+ "id": 44381,
+ "nodeType": "Return",
+ "src": "17801:44:137"
+ }
+ ]
+ },
+ "documentation": "@notice Computes the up-to-date inflation factor.\n@return Current inflation factor.\n@return Last time when the returned inflation factor was updated.",
+ "id": 44383,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getUpdatedInflationFactor",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44269,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "16519:2:137"
+ },
+ "returnParameters": {
+ "id": 44274,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44271,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44383,
+ "src": "16544:27:137",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 44270,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "16544:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44273,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44383,
+ "src": "16573:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44272,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "16573:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "16543:38:137"
+ },
+ "scope": 44644,
+ "src": "16485:1407:137",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "private"
+ },
+ {
+ "body": {
+ "id": 44401,
+ "nodeType": "Block",
+ "src": "18238:38:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44397,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44385,
+ "src": "18261:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44398,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44387,
+ "src": "18265:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44396,
+ "name": "_transfer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44472,
+ "src": "18251:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (address,uint256) returns (bool)"
+ }
+ },
+ "id": 44399,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18251:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 44395,
+ "id": 44400,
+ "nodeType": "Return",
+ "src": "18244:27:137"
+ }
+ ]
+ },
+ "documentation": "@notice Transfers `value` from `msg.sender` to `to`\n@param to The address to transfer to.\n@param value The amount to be transferred.",
+ "id": 44402,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 44390,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 44389,
+ "name": "updateInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43419,
+ "src": "18173:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "18173:21:137"
+ },
+ {
+ "arguments": null,
+ "id": 44392,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 44391,
+ "name": "onlyWhenNotFrozen",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3631,
+ "src": "18199:17:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "18199:17:137"
+ }
+ ],
+ "name": "transfer",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44388,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44385,
+ "name": "to",
+ "nodeType": "VariableDeclaration",
+ "scope": 44402,
+ "src": "18131:10:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44384,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "18131:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44387,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 44402,
+ "src": "18143:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44386,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "18143:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "18130:27:137"
+ },
+ "returnParameters": {
+ "id": 44395,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44394,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44402,
+ "src": "18230:4:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 44393,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "18230:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "18229:6:137"
+ },
+ "scope": 44644,
+ "src": "18113:163:137",
+ "stateMutability": "nonpayable",
+ "superFunction": 46878,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 44471,
+ "nodeType": "Block",
+ "src": "18543:399:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 44416,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 44412,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44404,
+ "src": "18557:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 44414,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "18571:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 44413,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "18563:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 44415,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18563:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "18557:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "7472616e7366657220617474656d7074656420746f207265736572766564206164647265737320307830",
+ "id": 44417,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "18575:44:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_d70e6696a6c0b4643ee1ebae9ec096136ed54277bf37d57ae5b5cfc09b48d8e8",
+ "typeString": "literal_string \"transfer attempted to reserved address 0x0\""
+ },
+ "value": "transfer attempted to reserved address 0x0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_d70e6696a6c0b4643ee1ebae9ec096136ed54277bf37d57ae5b5cfc09b48d8e8",
+ "typeString": "literal_string \"transfer attempted to reserved address 0x0\""
+ }
+ ],
+ "id": 44411,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "18549:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 44418,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18549:71:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44419,
+ "nodeType": "ExpressionStatement",
+ "src": "18549:71:137"
+ },
+ {
+ "assignments": [
+ 44421
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44421,
+ "name": "units",
+ "nodeType": "VariableDeclaration",
+ "scope": 44471,
+ "src": "18626:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44420,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "18626:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44427,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44423,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "18656:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44424,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "18656:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44425,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44406,
+ "src": "18679:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44422,
+ "name": "_valueToUnits",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44268,
+ "src": "18642:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44426,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18642:43:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "18626:59:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 44434,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44429,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "18699:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44432,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44430,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "18708:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 44431,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "18708:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "18699:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 44433,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44421,
+ "src": "18723:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "18699:29:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "7472616e736665722076616c75652065786365656465642062616c616e6365206f662073656e646572",
+ "id": 44435,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "18730:43:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_993a5b9c92acf262ea69aa9bd83d497a43d16d43273a37ad498a45ebc1a76158",
+ "typeString": "literal_string \"transfer value exceeded balance of sender\""
+ },
+ "value": "transfer value exceeded balance of sender"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_993a5b9c92acf262ea69aa9bd83d497a43d16d43273a37ad498a45ebc1a76158",
+ "typeString": "literal_string \"transfer value exceeded balance of sender\""
+ }
+ ],
+ "id": 44428,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "18691:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 44436,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18691:83:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44437,
+ "nodeType": "ExpressionStatement",
+ "src": "18691:83:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44449,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44438,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "18780:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44441,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44439,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "18789:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 44440,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "18789:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "18780:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44447,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44421,
+ "src": "18828:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44442,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "18803:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44445,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44443,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "18812:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 44444,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "18812:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "18803:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44446,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46188,
+ "src": "18803:24:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44448,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18803:31:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "18780:54:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44450,
+ "nodeType": "ExpressionStatement",
+ "src": "18780:54:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44460,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44451,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "18840:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44453,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44452,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44404,
+ "src": "18849:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "18840:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44458,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44421,
+ "src": "18872:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44454,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "18855:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44456,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44455,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44404,
+ "src": "18864:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "18855:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44457,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "18855:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44459,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18855:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "18840:38:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44461,
+ "nodeType": "ExpressionStatement",
+ "src": "18840:38:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44463,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "18898:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 44464,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "18898:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44465,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44404,
+ "src": "18910:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44466,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44406,
+ "src": "18914:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44462,
+ "name": "Transfer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 43330
+ ],
+ "referencedDeclaration": 43330,
+ "src": "18889:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,address,uint256)"
+ }
+ },
+ "id": 44467,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18889:31:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44468,
+ "nodeType": "EmitStatement",
+ "src": "18884:36:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 44469,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "18933:4:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 44410,
+ "id": 44470,
+ "nodeType": "Return",
+ "src": "18926:11:137"
+ }
+ ]
+ },
+ "documentation": "@notice Transfers StableToken from one address to another\n@param to The address to transfer StableToken to.\n@param value The amount of StableToken to be transferred.",
+ "id": 44472,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "_transfer",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44407,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44404,
+ "name": "to",
+ "nodeType": "VariableDeclaration",
+ "scope": 44472,
+ "src": "18492:10:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44403,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "18492:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44406,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 44472,
+ "src": "18504:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44405,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "18504:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "18491:27:137"
+ },
+ "returnParameters": {
+ "id": 44410,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44409,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44472,
+ "src": "18537:4:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 44408,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "18537:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "18536:6:137"
+ },
+ "scope": 44644,
+ "src": "18473:469:137",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 44511,
+ "nodeType": "Block",
+ "src": "19632:162:137",
+ "statements": [
+ {
+ "assignments": [
+ 44486
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44486,
+ "name": "units",
+ "nodeType": "VariableDeclaration",
+ "scope": 44511,
+ "src": "19638:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44485,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "19638:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44492,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44488,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "19668:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44489,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "19668:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44490,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44476,
+ "src": "19691:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44487,
+ "name": "_valueToUnits",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44268,
+ "src": "19654:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44491,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19654:43:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "19638:59:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44502,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44493,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "19703:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44495,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44494,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44474,
+ "src": "19712:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "19703:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44500,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44486,
+ "src": "19739:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44496,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "19720:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44498,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44497,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44474,
+ "src": "19729:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "19720:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44499,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46188,
+ "src": "19720:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44501,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19720:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "19703:42:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44503,
+ "nodeType": "ExpressionStatement",
+ "src": "19703:42:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44509,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 44504,
+ "name": "totalSupply_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43354,
+ "src": "19751:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44507,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44486,
+ "src": "19783:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44505,
+ "name": "totalSupply_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43354,
+ "src": "19766:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44506,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46188,
+ "src": "19766:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44508,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19766:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "19751:38:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44510,
+ "nodeType": "ExpressionStatement",
+ "src": "19751:38:137"
+ }
+ ]
+ },
+ "documentation": "@notice Reserve balance for making payments for gas in this StableToken currency.\n@param from The account to reserve balance from\n@param value The amount of balance to reserve\n@dev Note that this function is called by the protocol when paying for tx fees in this\ncurrency. After the tx is executed, gas is refunded to the sender and credited to the\nvarious tx fee recipients via a call to `creditGasFees`. Note too that the events emitted\nby `creditGasFees` reflect the *net* gas fee payments for the transaction.",
+ "id": 44512,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 44479,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 44478,
+ "name": "onlyVm",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2799,
+ "src": "19575:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "19575:6:137"
+ },
+ {
+ "arguments": null,
+ "id": 44481,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 44480,
+ "name": "onlyWhenNotFrozen",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3631,
+ "src": "19586:17:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "19586:17:137"
+ },
+ {
+ "arguments": null,
+ "id": 44483,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 44482,
+ "name": "updateInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43419,
+ "src": "19608:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "19608:21:137"
+ }
+ ],
+ "name": "debitGasFees",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44477,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44474,
+ "name": "from",
+ "nodeType": "VariableDeclaration",
+ "scope": 44512,
+ "src": "19529:12:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44473,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "19529:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44476,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 44512,
+ "src": "19543:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44475,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "19543:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "19528:29:137"
+ },
+ "returnParameters": {
+ "id": 44484,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "19632:0:137"
+ },
+ "scope": 44644,
+ "src": "19507:287:137",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44594,
+ "nodeType": "Block",
+ "src": "20794:370:137",
+ "statements": [
+ {
+ "assignments": [
+ 44536
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44536,
+ "name": "units",
+ "nodeType": "VariableDeclaration",
+ "scope": 44594,
+ "src": "20800:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44535,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "20800:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44542,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44538,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "20830:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44539,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "20830:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44540,
+ "name": "refund",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44522,
+ "src": "20853:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44537,
+ "name": "_valueToUnits",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44268,
+ "src": "20816:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44541,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20816:44:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "20800:60:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44552,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44543,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "20866:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44545,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44544,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44514,
+ "src": "20875:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "20866:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44550,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44536,
+ "src": "20902:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44546,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "20883:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44548,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44547,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44514,
+ "src": "20892:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "20883:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44549,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "20883:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44551,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20883:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "20866:42:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44553,
+ "nodeType": "ExpressionStatement",
+ "src": "20866:42:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44563,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 44554,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44536,
+ "src": "20915:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44558,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44514,
+ "src": "20944:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44559,
+ "name": "communityFund",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44520,
+ "src": "20950:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44560,
+ "name": "baseTxFee",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44528,
+ "src": "20965:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44557,
+ "name": "_creditGas",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44643,
+ "src": "20933:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (address,address,uint256) returns (uint256)"
+ }
+ },
+ "id": 44561,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20933:42:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44555,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44536,
+ "src": "20923:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44556,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "20923:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44562,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20923:53:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "20915:61:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44564,
+ "nodeType": "ExpressionStatement",
+ "src": "20915:61:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44574,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 44565,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44536,
+ "src": "20982:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44569,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44514,
+ "src": "21011:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44570,
+ "name": "feeRecipient",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44516,
+ "src": "21017:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44571,
+ "name": "tipTxFee",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44524,
+ "src": "21031:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44568,
+ "name": "_creditGas",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44643,
+ "src": "21000:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (address,address,uint256) returns (uint256)"
+ }
+ },
+ "id": 44572,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21000:40:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44566,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44536,
+ "src": "20990:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44567,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "20990:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44573,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20990:51:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "20982:59:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44575,
+ "nodeType": "ExpressionStatement",
+ "src": "20982:59:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44585,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 44576,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44536,
+ "src": "21047:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44580,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44514,
+ "src": "21076:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44581,
+ "name": "gatewayFeeRecipient",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44518,
+ "src": "21082:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44582,
+ "name": "gatewayFee",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44526,
+ "src": "21103:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44579,
+ "name": "_creditGas",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44643,
+ "src": "21065:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (address,address,uint256) returns (uint256)"
+ }
+ },
+ "id": 44583,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21065:49:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44577,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44536,
+ "src": "21055:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44578,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "21055:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44584,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21055:60:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "21047:68:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44586,
+ "nodeType": "ExpressionStatement",
+ "src": "21047:68:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44592,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 44587,
+ "name": "totalSupply_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43354,
+ "src": "21121:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44590,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44536,
+ "src": "21153:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44588,
+ "name": "totalSupply_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43354,
+ "src": "21136:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44589,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "21136:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44591,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21136:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "21121:38:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44593,
+ "nodeType": "ExpressionStatement",
+ "src": "21121:38:137"
+ }
+ ]
+ },
+ "documentation": "@notice Alternative function to credit balance after making payments\nfor gas in this StableToken currency.\n@param from The account to debit balance from\n@param feeRecipient Coinbase address\n@param gatewayFeeRecipient Gateway address\n@param communityFund Community fund address\n@param tipTxFee Coinbase fee\n@param baseTxFee Community fund fee\n@param gatewayFee Gateway fee\n@dev Note that this function is called by the protocol when paying for tx fees in this\ncurrency. Before the tx is executed, gas is debited from the sender via a call to\n`debitGasFees`. Note too that the events emitted by `creditGasFees` reflect the *net* gas fee\npayments for the transaction.",
+ "id": 44595,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 44531,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 44530,
+ "name": "onlyVm",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2799,
+ "src": "20769:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "20769:6:137"
+ },
+ {
+ "arguments": null,
+ "id": 44533,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 44532,
+ "name": "onlyWhenNotFrozen",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3631,
+ "src": "20776:17:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "20776:17:137"
+ }
+ ],
+ "name": "creditGasFees",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44529,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44514,
+ "name": "from",
+ "nodeType": "VariableDeclaration",
+ "scope": 44595,
+ "src": "20568:12:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44513,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "20568:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44516,
+ "name": "feeRecipient",
+ "nodeType": "VariableDeclaration",
+ "scope": 44595,
+ "src": "20586:20:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44515,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "20586:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44518,
+ "name": "gatewayFeeRecipient",
+ "nodeType": "VariableDeclaration",
+ "scope": 44595,
+ "src": "20612:27:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44517,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "20612:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44520,
+ "name": "communityFund",
+ "nodeType": "VariableDeclaration",
+ "scope": 44595,
+ "src": "20645:21:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44519,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "20645:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44522,
+ "name": "refund",
+ "nodeType": "VariableDeclaration",
+ "scope": 44595,
+ "src": "20672:14:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44521,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "20672:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44524,
+ "name": "tipTxFee",
+ "nodeType": "VariableDeclaration",
+ "scope": 44595,
+ "src": "20692:16:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44523,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "20692:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44526,
+ "name": "gatewayFee",
+ "nodeType": "VariableDeclaration",
+ "scope": 44595,
+ "src": "20714:18:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44525,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "20714:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44528,
+ "name": "baseTxFee",
+ "nodeType": "VariableDeclaration",
+ "scope": 44595,
+ "src": "20738:17:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44527,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "20738:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "20562:197:137"
+ },
+ "returnParameters": {
+ "id": 44534,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "20794:0:137"
+ },
+ "scope": 44644,
+ "src": "20540:624:137",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44642,
+ "nodeType": "Block",
+ "src": "21256:218:137",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 44610,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 44606,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44599,
+ "src": "21266:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 44608,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "21280:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 44607,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "21272:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 44609,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21272:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "21266:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 44614,
+ "nodeType": "IfStatement",
+ "src": "21262:45:137",
+ "trueBody": {
+ "id": 44613,
+ "nodeType": "Block",
+ "src": "21284:23:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 44611,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "21299:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "functionReturnParameters": 44605,
+ "id": 44612,
+ "nodeType": "Return",
+ "src": "21292:8:137"
+ }
+ ]
+ }
+ },
+ {
+ "assignments": [
+ 44616
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44616,
+ "name": "units",
+ "nodeType": "VariableDeclaration",
+ "scope": 44642,
+ "src": "21312:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44615,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "21312:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44622,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44618,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "21342:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44619,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "21342:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44620,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44601,
+ "src": "21365:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44617,
+ "name": "_valueToUnits",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44268,
+ "src": "21328:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44621,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21328:43:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "21312:59:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44632,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44623,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "21377:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44625,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44624,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44599,
+ "src": "21386:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "21377:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44630,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44616,
+ "src": "21409:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44626,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "21392:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44628,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44627,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44599,
+ "src": "21401:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "21392:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44629,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "21392:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44631,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21392:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "21377:38:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44633,
+ "nodeType": "ExpressionStatement",
+ "src": "21377:38:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44635,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44597,
+ "src": "21435:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44636,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44599,
+ "src": "21441:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44637,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44601,
+ "src": "21445:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44634,
+ "name": "Transfer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 43330
+ ],
+ "referencedDeclaration": 43330,
+ "src": "21426:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,address,uint256)"
+ }
+ },
+ "id": 44638,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21426:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44639,
+ "nodeType": "EmitStatement",
+ "src": "21421:30:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44640,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44616,
+ "src": "21464:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 44605,
+ "id": 44641,
+ "nodeType": "Return",
+ "src": "21457:12:137"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 44643,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "_creditGas",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44602,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44597,
+ "name": "from",
+ "nodeType": "VariableDeclaration",
+ "scope": 44643,
+ "src": "21188:12:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44596,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "21188:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44599,
+ "name": "to",
+ "nodeType": "VariableDeclaration",
+ "scope": 44643,
+ "src": "21202:10:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44598,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "21202:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44601,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 44643,
+ "src": "21214:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44600,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "21214:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "21187:41:137"
+ },
+ "returnParameters": {
+ "id": 44605,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44604,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44643,
+ "src": "21247:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44603,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "21247:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "21246:9:137"
+ },
+ "scope": 44644,
+ "src": "21168:306:137",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "internal"
+ }
+ ],
+ "scope": 44645,
+ "src": "695:20782:137"
+ }
+ ],
+ "src": "0:21478:137"
+ },
+ "legacyAST": {
+ "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/StableToken.sol",
+ "exportedSymbols": {
+ "StableToken": [
+ 44644
+ ]
+ },
+ "id": 44645,
+ "nodeType": "SourceUnit",
+ "nodes": [
+ {
+ "id": 43270,
+ "literals": [
+ "solidity",
+ "^",
+ "0.5",
+ ".13"
+ ],
+ "nodeType": "PragmaDirective",
+ "src": "0:24:137"
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
+ "id": 43271,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 46333,
+ "src": "26:59:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "file": "openzeppelin-solidity/contracts/ownership/Ownable.sol",
+ "id": 43272,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 46451,
+ "src": "86:63:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
+ "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
+ "id": 43273,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 46925,
+ "src": "150:64:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/stability/interfaces/IStableToken.sol",
+ "file": "./interfaces/IStableToken.sol",
+ "id": 43274,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 45383,
+ "src": "216:39:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/interfaces/ICeloToken.sol",
+ "file": "../common/interfaces/ICeloToken.sol",
+ "id": 43275,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 9411,
+ "src": "256:45:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/interfaces/ICeloVersionedContract.sol",
+ "file": "../common/interfaces/ICeloVersionedContract.sol",
+ "id": 43276,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 9425,
+ "src": "302:57:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/CalledByVm.sol",
+ "file": "../common/CalledByVm.sol",
+ "id": 43277,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 2801,
+ "src": "360:34:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/Initializable.sol",
+ "file": "../common/Initializable.sol",
+ "id": 43278,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 4705,
+ "src": "395:37:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/FixidityLib.sol",
+ "file": "../common/FixidityLib.sol",
+ "id": 43279,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 3611,
+ "src": "433:35:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/Freezable.sol",
+ "file": "../common/Freezable.sol",
+ "id": 43280,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 3633,
+ "src": "469:33:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/UsingRegistry.sol",
+ "file": "../common/UsingRegistry.sol",
+ "id": 43281,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 8616,
+ "src": "503:37:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "absolutePath": "/Users/sawa/zDev/core/celo-monorepo/packages/protocol/contracts/common/UsingPrecompiles.sol",
+ "file": "../common/UsingPrecompiles.sol",
+ "id": 43282,
+ "nodeType": "ImportDirective",
+ "scope": 44645,
+ "sourceUnit": 8210,
+ "src": "541:40:137",
+ "symbolAliases": [],
+ "unitAlias": ""
+ },
+ {
+ "baseContracts": [
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 43283,
+ "name": "ICeloVersionedContract",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 9424,
+ "src": "721:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_ICeloVersionedContract_$9424",
+ "typeString": "contract ICeloVersionedContract"
+ }
+ },
+ "id": 43284,
+ "nodeType": "InheritanceSpecifier",
+ "src": "721:22:137"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 43285,
+ "name": "Ownable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 46450,
+ "src": "747:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Ownable_$46450",
+ "typeString": "contract Ownable"
+ }
+ },
+ "id": 43286,
+ "nodeType": "InheritanceSpecifier",
+ "src": "747:7:137"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 43287,
+ "name": "Initializable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 4704,
+ "src": "758:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Initializable_$4704",
+ "typeString": "contract Initializable"
+ }
+ },
+ "id": 43288,
+ "nodeType": "InheritanceSpecifier",
+ "src": "758:13:137"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 43289,
+ "name": "UsingRegistry",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 8615,
+ "src": "775:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_UsingRegistry_$8615",
+ "typeString": "contract UsingRegistry"
+ }
+ },
+ "id": 43290,
+ "nodeType": "InheritanceSpecifier",
+ "src": "775:13:137"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 43291,
+ "name": "UsingPrecompiles",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 8209,
+ "src": "792:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_UsingPrecompiles_$8209",
+ "typeString": "contract UsingPrecompiles"
+ }
+ },
+ "id": 43292,
+ "nodeType": "InheritanceSpecifier",
+ "src": "792:16:137"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 43293,
+ "name": "Freezable",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3632,
+ "src": "812:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_Freezable_$3632",
+ "typeString": "contract Freezable"
+ }
+ },
+ "id": 43294,
+ "nodeType": "InheritanceSpecifier",
+ "src": "812:9:137"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 43295,
+ "name": "CalledByVm",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 2800,
+ "src": "825:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_CalledByVm_$2800",
+ "typeString": "contract CalledByVm"
+ }
+ },
+ "id": 43296,
+ "nodeType": "InheritanceSpecifier",
+ "src": "825:10:137"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 43297,
+ "name": "IStableToken",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 45382,
+ "src": "839:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IStableToken_$45382",
+ "typeString": "contract IStableToken"
+ }
+ },
+ "id": 43298,
+ "nodeType": "InheritanceSpecifier",
+ "src": "839:12:137"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 43299,
+ "name": "IERC20",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 46924,
+ "src": "855:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IERC20_$46924",
+ "typeString": "contract IERC20"
+ }
+ },
+ "id": 43300,
+ "nodeType": "InheritanceSpecifier",
+ "src": "855:6:137"
+ },
+ {
+ "arguments": null,
+ "baseName": {
+ "contractScope": null,
+ "id": 43301,
+ "name": "ICeloToken",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 9410,
+ "src": "865:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_ICeloToken_$9410",
+ "typeString": "contract ICeloToken"
+ }
+ },
+ "id": 43302,
+ "nodeType": "InheritanceSpecifier",
+ "src": "865:10:137"
+ }
+ ],
+ "contractDependencies": [
+ 2800,
+ 3632,
+ 4704,
+ 8209,
+ 8615,
+ 9410,
+ 9424,
+ 45382,
+ 45995,
+ 46450,
+ 46924
+ ],
+ "contractKind": "contract",
+ "documentation": "@title An ERC20 compliant token with adjustable supply.",
+ "fullyImplemented": true,
+ "id": 44644,
+ "linearizedBaseContracts": [
+ 44644,
+ 9410,
+ 46924,
+ 45382,
+ 2800,
+ 3632,
+ 8209,
+ 8615,
+ 4704,
+ 46450,
+ 45995,
+ 9424
+ ],
+ "name": "StableToken",
+ "nodeType": "ContractDefinition",
+ "nodes": [
+ {
+ "id": 43305,
+ "libraryName": {
+ "contractScope": null,
+ "id": 43303,
+ "name": "FixidityLib",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3610,
+ "src": "886:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_FixidityLib_$3610",
+ "typeString": "library FixidityLib"
+ }
+ },
+ "nodeType": "UsingForDirective",
+ "src": "880:43:137",
+ "typeName": {
+ "contractScope": null,
+ "id": 43304,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "902:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ }
+ },
+ {
+ "id": 43308,
+ "libraryName": {
+ "contractScope": null,
+ "id": 43306,
+ "name": "SafeMath",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 46332,
+ "src": "932:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_SafeMath_$46332",
+ "typeString": "library SafeMath"
+ }
+ },
+ "nodeType": "UsingForDirective",
+ "src": "926:27:137",
+ "typeName": {
+ "id": 43307,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "945:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 43314,
+ "name": "InflationFactorUpdated",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 43313,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43310,
+ "indexed": false,
+ "name": "factor",
+ "nodeType": "VariableDeclaration",
+ "scope": 43314,
+ "src": "986:14:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43309,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "986:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43312,
+ "indexed": false,
+ "name": "lastUpdated",
+ "nodeType": "VariableDeclaration",
+ "scope": 43314,
+ "src": "1002:19:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43311,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1002:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "985:37:137"
+ },
+ "src": "957:66:137"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 43322,
+ "name": "InflationParametersUpdated",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 43321,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43316,
+ "indexed": false,
+ "name": "rate",
+ "nodeType": "VariableDeclaration",
+ "scope": 43322,
+ "src": "1060:12:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43315,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1060:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43318,
+ "indexed": false,
+ "name": "updatePeriod",
+ "nodeType": "VariableDeclaration",
+ "scope": 43322,
+ "src": "1074:20:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43317,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1074:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43320,
+ "indexed": false,
+ "name": "lastUpdated",
+ "nodeType": "VariableDeclaration",
+ "scope": 43322,
+ "src": "1096:19:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43319,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1096:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1059:57:137"
+ },
+ "src": "1027:90:137"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 43330,
+ "name": "Transfer",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 43329,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43324,
+ "indexed": true,
+ "name": "from",
+ "nodeType": "VariableDeclaration",
+ "scope": 43330,
+ "src": "1136:20:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43323,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1136:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43326,
+ "indexed": true,
+ "name": "to",
+ "nodeType": "VariableDeclaration",
+ "scope": 43330,
+ "src": "1158:18:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43325,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1158:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43328,
+ "indexed": false,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 43330,
+ "src": "1178:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43327,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1178:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1135:57:137"
+ },
+ "src": "1121:72:137"
+ },
+ {
+ "anonymous": false,
+ "documentation": null,
+ "id": 43334,
+ "name": "TransferComment",
+ "nodeType": "EventDefinition",
+ "parameters": {
+ "id": 43333,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43332,
+ "indexed": false,
+ "name": "comment",
+ "nodeType": "VariableDeclaration",
+ "scope": 43334,
+ "src": "1219:14:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 43331,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "1219:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "1218:16:137"
+ },
+ "src": "1197:38:137"
+ },
+ {
+ "constant": true,
+ "id": 43342,
+ "name": "GRANDA_MENTO_REGISTRY_ID",
+ "nodeType": "VariableDeclaration",
+ "scope": 44644,
+ "src": "1239:86:137",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 43335,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "1239:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "4772616e64614d656e746f",
+ "id": 43339,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "1310:13:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_0d4406241408ce11a9d51ae594b109e000ba6a77345acafba2dc2ddfcc3b5868",
+ "typeString": "literal_string \"GrandaMento\""
+ },
+ "value": "GrandaMento"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_stringliteral_0d4406241408ce11a9d51ae594b109e000ba6a77345acafba2dc2ddfcc3b5868",
+ "typeString": "literal_string \"GrandaMento\""
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43337,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47575,
+ "src": "1293:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 43338,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encodePacked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "1293:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 43340,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1293:31:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 43336,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47582,
+ "src": "1283:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 43341,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "1283:42:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43344,
+ "name": "name_",
+ "nodeType": "VariableDeclaration",
+ "scope": 44644,
+ "src": "1330:21:137",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 43343,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "1330:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43346,
+ "name": "symbol_",
+ "nodeType": "VariableDeclaration",
+ "scope": 44644,
+ "src": "1355:23:137",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 43345,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "1355:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43348,
+ "name": "decimals_",
+ "nodeType": "VariableDeclaration",
+ "scope": 44644,
+ "src": "1382:24:137",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 43347,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "1382:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43352,
+ "name": "balances",
+ "nodeType": "VariableDeclaration",
+ "scope": 44644,
+ "src": "1474:45:137",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ },
+ "typeName": {
+ "id": 43351,
+ "keyType": {
+ "id": 43349,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1482:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1474:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ },
+ "valueType": {
+ "id": 43350,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1493:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43354,
+ "name": "totalSupply_",
+ "nodeType": "VariableDeclaration",
+ "scope": 44644,
+ "src": "1523:29:137",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43353,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1523:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43360,
+ "name": "allowed",
+ "nodeType": "VariableDeclaration",
+ "scope": 44644,
+ "src": "1621:64:137",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ },
+ "typeName": {
+ "id": 43359,
+ "keyType": {
+ "id": 43355,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1629:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1621:47:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ },
+ "valueType": {
+ "id": 43358,
+ "keyType": {
+ "id": 43356,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "1648:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "Mapping",
+ "src": "1640:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ },
+ "valueType": {
+ "id": 43357,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "1659:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "canonicalName": "StableToken.InflationState",
+ "id": 43369,
+ "members": [
+ {
+ "constant": false,
+ "id": 43362,
+ "name": "rate",
+ "nodeType": "VariableDeclaration",
+ "scope": 43369,
+ "src": "2062:25:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 43361,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "2062:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43364,
+ "name": "factor",
+ "nodeType": "VariableDeclaration",
+ "scope": 43369,
+ "src": "2093:27:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 43363,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "2093:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43366,
+ "name": "updatePeriod",
+ "nodeType": "VariableDeclaration",
+ "scope": 43369,
+ "src": "2126:20:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43365,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2126:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43368,
+ "name": "factorLastUpdated",
+ "nodeType": "VariableDeclaration",
+ "scope": 43369,
+ "src": "2152:25:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43367,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2152:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "name": "InflationState",
+ "nodeType": "StructDefinition",
+ "scope": 44644,
+ "src": "2034:148:137",
+ "visibility": "public"
+ },
+ {
+ "constant": false,
+ "id": 43371,
+ "name": "inflationState",
+ "nodeType": "VariableDeclaration",
+ "scope": 44644,
+ "src": "2186:29:137",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 43370,
+ "name": "InflationState",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 43369,
+ "src": "2186:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage_ptr",
+ "typeString": "struct StableToken.InflationState"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43373,
+ "name": "exchangeRegistryId",
+ "nodeType": "VariableDeclaration",
+ "scope": 44644,
+ "src": "2349:26:137",
+ "stateVariable": true,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 43372,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "2349:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 43418,
+ "nodeType": "Block",
+ "src": "2541:442:137",
+ "statements": [
+ {
+ "assignments": [
+ 43378
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 43378,
+ "name": "updatedInflationFactor",
+ "nodeType": "VariableDeclaration",
+ "scope": 43418,
+ "src": "2547:50:137",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 43377,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "2547:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 43379,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2547:50:137"
+ },
+ {
+ "assignments": [
+ 43381
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 43381,
+ "name": "lastUpdated",
+ "nodeType": "VariableDeclaration",
+ "scope": 43418,
+ "src": "2603:19:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43380,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "2603:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 43382,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "2603:19:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43388,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 43383,
+ "name": "updatedInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43378,
+ "src": "2630:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43384,
+ "name": "lastUpdated",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43381,
+ "src": "2654:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 43385,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "TupleExpression",
+ "src": "2629:37:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$",
+ "typeString": "tuple(struct FixidityLib.Fraction memory,uint256)"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 43386,
+ "name": "getUpdatedInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44383,
+ "src": "2669:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$",
+ "typeString": "function () view returns (struct FixidityLib.Fraction memory,uint256)"
+ }
+ },
+ "id": 43387,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2669:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$",
+ "typeString": "tuple(struct FixidityLib.Fraction memory,uint256)"
+ }
+ },
+ "src": "2629:67:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43389,
+ "nodeType": "ExpressionStatement",
+ "src": "2629:67:137"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 43393,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43390,
+ "name": "lastUpdated",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43381,
+ "src": "2707:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43391,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "2722:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43392,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factorLastUpdated",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43368,
+ "src": "2722:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2707:47:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 43416,
+ "nodeType": "IfStatement",
+ "src": "2703:269:137",
+ "trueBody": {
+ "id": 43415,
+ "nodeType": "Block",
+ "src": "2756:216:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43398,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43394,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "2764:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43396,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "2764:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43397,
+ "name": "updatedInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43378,
+ "src": "2788:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "src": "2764:46:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "id": 43399,
+ "nodeType": "ExpressionStatement",
+ "src": "2764:46:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43404,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43400,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "2818:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43402,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "factorLastUpdated",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43368,
+ "src": "2818:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43403,
+ "name": "lastUpdated",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43381,
+ "src": "2853:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "2818:46:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43405,
+ "nodeType": "ExpressionStatement",
+ "src": "2818:46:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43407,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "2900:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43408,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "2900:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "id": 43409,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unwrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3055,
+ "src": "2900:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)"
+ }
+ },
+ "id": 43410,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2900:30:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43411,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "2932:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43412,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factorLastUpdated",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43368,
+ "src": "2932:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43406,
+ "name": "InflationFactorUpdated",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43314,
+ "src": "2877:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
+ "typeString": "function (uint256,uint256)"
+ }
+ },
+ "id": 43413,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "2877:88:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43414,
+ "nodeType": "EmitStatement",
+ "src": "2872:93:137"
+ }
+ ]
+ }
+ },
+ {
+ "id": 43417,
+ "nodeType": "PlaceholderStatement",
+ "src": "2977:1:137"
+ }
+ ]
+ },
+ "documentation": "@notice Recomputes and updates inflation factor if more than `updatePeriod`\nhas passed since last update.",
+ "id": 43419,
+ "name": "updateInflationFactor",
+ "nodeType": "ModifierDefinition",
+ "parameters": {
+ "id": 43374,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "2538:2:137"
+ },
+ "src": "2508:475:137",
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 43436,
+ "nodeType": "Block",
+ "src": "3347:30:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 43430,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3361:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "32",
+ "id": 43431,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3364:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_2_by_1",
+ "typeString": "int_const 2"
+ },
+ "value": "2"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43432,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3367:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 43433,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "3370:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "id": 43434,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "3360:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_rational_1_by_1_$_t_rational_2_by_1_$_t_rational_0_by_1_$_t_rational_1_by_1_$",
+ "typeString": "tuple(int_const 1,int_const 2,int_const 0,int_const 1)"
+ }
+ },
+ "functionReturnParameters": 43429,
+ "id": 43435,
+ "nodeType": "Return",
+ "src": "3353:19:137"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the storage, major, minor, and patch version of the contract.\n@return Storage version of the contract.\n@return Major version of the contract.\n@return Minor version of the contract.\n@return Patch version of the contract.",
+ "id": 43437,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getVersionNumber",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43420,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3285:2:137"
+ },
+ "returnParameters": {
+ "id": 43429,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43422,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43437,
+ "src": "3311:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43421,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3311:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43424,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43437,
+ "src": "3320:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43423,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3320:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43426,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43437,
+ "src": "3329:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43425,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3329:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43428,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43437,
+ "src": "3338:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43427,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "3338:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3310:36:137"
+ },
+ "scope": 44644,
+ "src": "3260:117:137",
+ "stateMutability": "pure",
+ "superFunction": 9423,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 43445,
+ "nodeType": "Block",
+ "src": "3576:2:137",
+ "statements": []
+ },
+ "documentation": "@notice Sets initialized == true on implementation contracts\n@param test Set to true to skip implementation initialization",
+ "id": 43446,
+ "implemented": true,
+ "kind": "constructor",
+ "modifiers": [
+ {
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43442,
+ "name": "test",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43439,
+ "src": "3570:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ }
+ ],
+ "id": 43443,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43441,
+ "name": "Initializable",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 4704,
+ "src": "3556:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_Initializable_$4704_$",
+ "typeString": "type(contract Initializable)"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "3556:19:137"
+ }
+ ],
+ "name": "",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43440,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43439,
+ "name": "test",
+ "nodeType": "VariableDeclaration",
+ "scope": 43446,
+ "src": "3538:9:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 43438,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "3538:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "3537:11:137"
+ },
+ "returnParameters": {
+ "id": 43444,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "3576:0:137"
+ },
+ "scope": 44644,
+ "src": "3526:52:137",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 43583,
+ "nodeType": "Block",
+ "src": "4630:923:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 43474,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43472,
+ "name": "inflationRate",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43456,
+ "src": "4644:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43473,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "4661:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "4644:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4d7573742070726f766964652061206e6f6e2d7a65726f20696e666c6174696f6e2072617465",
+ "id": 43475,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "4664:40:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_48e3066a90a0ef22dcbd5db7ad3d867f55cd314a2999106fc4f8ebcc7e6bd881",
+ "typeString": "literal_string \"Must provide a non-zero inflation rate\""
+ },
+ "value": "Must provide a non-zero inflation rate"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_48e3066a90a0ef22dcbd5db7ad3d867f55cd314a2999106fc4f8ebcc7e6bd881",
+ "typeString": "literal_string \"Must provide a non-zero inflation rate\""
+ }
+ ],
+ "id": 43471,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "4636:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43476,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4636:69:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43477,
+ "nodeType": "ExpressionStatement",
+ "src": "4636:69:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 43481,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43479,
+ "name": "inflationFactorUpdatePeriod",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43458,
+ "src": "4719:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43480,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "4749:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "4719:31:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "696e666c6174696f6e466163746f72557064617465506572696f64206d757374206265203e2030",
+ "id": 43482,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "4752:41:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_18fc288b8179f1f90a98b1cf37d5ee2af3d5162ca25cf88078de10012e395bb0",
+ "typeString": "literal_string \"inflationFactorUpdatePeriod must be > 0\""
+ },
+ "value": "inflationFactorUpdatePeriod must be > 0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_18fc288b8179f1f90a98b1cf37d5ee2af3d5162ca25cf88078de10012e395bb0",
+ "typeString": "literal_string \"inflationFactorUpdatePeriod must be > 0\""
+ }
+ ],
+ "id": 43478,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "4711:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43483,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4711:83:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43484,
+ "nodeType": "ExpressionStatement",
+ "src": "4711:83:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43486,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "4820:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43487,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "4820:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ ],
+ "id": 43485,
+ "name": "_transferOwnership",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 46449,
+ "src": "4801:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 43488,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4801:30:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43489,
+ "nodeType": "ExpressionStatement",
+ "src": "4801:30:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43492,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 43490,
+ "name": "totalSupply_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43354,
+ "src": "4838:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43491,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "4853:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "4838:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43493,
+ "nodeType": "ExpressionStatement",
+ "src": "4838:16:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43496,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 43494,
+ "name": "name_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43344,
+ "src": "4860:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43495,
+ "name": "_name",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43448,
+ "src": "4868:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ },
+ "src": "4860:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "id": 43497,
+ "nodeType": "ExpressionStatement",
+ "src": "4860:13:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43500,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 43498,
+ "name": "symbol_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43346,
+ "src": "4879:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43499,
+ "name": "_symbol",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43450,
+ "src": "4889:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ },
+ "src": "4879:17:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "id": 43501,
+ "nodeType": "ExpressionStatement",
+ "src": "4879:17:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43504,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 43502,
+ "name": "decimals_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43348,
+ "src": "4902:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43503,
+ "name": "_decimals",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43452,
+ "src": "4914:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "src": "4902:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "id": 43505,
+ "nodeType": "ExpressionStatement",
+ "src": "4902:21:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43513,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43506,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "4930:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43508,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "rate",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43362,
+ "src": "4930:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43511,
+ "name": "inflationRate",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43456,
+ "src": "4969:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43509,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "4952:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 43510,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "wrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3044,
+ "src": "4952:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 43512,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "4952:31:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "src": "4930:53:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "id": 43514,
+ "nodeType": "ExpressionStatement",
+ "src": "4930:53:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43521,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43515,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "4989:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43517,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "4989:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43518,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "5013:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 43519,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "fixed1",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3032,
+ "src": "5013:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function () pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 43520,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5013:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "src": "4989:44:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "id": 43522,
+ "nodeType": "ExpressionStatement",
+ "src": "4989:44:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43527,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43523,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "5039:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43525,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "updatePeriod",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43366,
+ "src": "5039:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43526,
+ "name": "inflationFactorUpdatePeriod",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43458,
+ "src": "5069:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "5039:57:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43528,
+ "nodeType": "ExpressionStatement",
+ "src": "5039:57:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43533,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43529,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "5152:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43531,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "factorLastUpdated",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43368,
+ "src": "5152:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43532,
+ "name": "now",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47590,
+ "src": "5187:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "5152:38:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43534,
+ "nodeType": "ExpressionStatement",
+ "src": "5152:38:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 43540,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43536,
+ "name": "initialBalanceAddresses",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43461,
+ "src": "5205:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 43537,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5205:30:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43538,
+ "name": "initialBalanceValues",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43464,
+ "src": "5239:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
+ "typeString": "uint256[] calldata"
+ }
+ },
+ "id": 43539,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5239:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "5205:61:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4172726179206c656e677468206d69736d61746368",
+ "id": 43541,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "5268:23:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_179ae693e0c70d403e6d1a2bebe6454a8d095a8abd12c6f3f032c5018f3e2aea",
+ "typeString": "literal_string \"Array length mismatch\""
+ },
+ "value": "Array length mismatch"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_179ae693e0c70d403e6d1a2bebe6454a8d095a8abd12c6f3f032c5018f3e2aea",
+ "typeString": "literal_string \"Array length mismatch\""
+ }
+ ],
+ "id": 43535,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "5197:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43542,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5197:95:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43543,
+ "nodeType": "ExpressionStatement",
+ "src": "5197:95:137"
+ },
+ {
+ "body": {
+ "id": 43568,
+ "nodeType": "Block",
+ "src": "5368:73:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43560,
+ "name": "initialBalanceAddresses",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43461,
+ "src": "5382:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 43562,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 43561,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43545,
+ "src": "5406:1:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "5382:26:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43563,
+ "name": "initialBalanceValues",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43464,
+ "src": "5410:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
+ "typeString": "uint256[] calldata"
+ }
+ },
+ "id": 43565,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 43564,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43545,
+ "src": "5431:1:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "5410:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43559,
+ "name": "_mint",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43878,
+ "src": "5376:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (address,uint256) returns (bool)"
+ }
+ },
+ "id": 43566,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5376:58:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 43567,
+ "nodeType": "ExpressionStatement",
+ "src": "5376:58:137"
+ }
+ ]
+ },
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 43551,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43548,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43545,
+ "src": "5318:1:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43549,
+ "name": "initialBalanceAddresses",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43461,
+ "src": "5322:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[] calldata"
+ }
+ },
+ "id": 43550,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "length",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5322:30:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "5318:34:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "id": 43569,
+ "initializationExpression": {
+ "assignments": [
+ 43545
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 43545,
+ "name": "i",
+ "nodeType": "VariableDeclaration",
+ "scope": 43569,
+ "src": "5303:9:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43544,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "5303:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 43547,
+ "initialValue": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43546,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "5315:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "5303:13:137"
+ },
+ "loopExpression": {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43557,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 43552,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43545,
+ "src": "5354:1:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "31",
+ "id": 43555,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "5364:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ },
+ "value": "1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_1_by_1",
+ "typeString": "int_const 1"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43553,
+ "name": "i",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43545,
+ "src": "5358:1:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43554,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "5358:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 43556,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5358:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "5354:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43558,
+ "nodeType": "ExpressionStatement",
+ "src": "5354:12:137"
+ },
+ "nodeType": "ForStatement",
+ "src": "5298:143:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43571,
+ "name": "registryAddress",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43454,
+ "src": "5458:15:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ ],
+ "id": 43570,
+ "name": "setRegistry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8432,
+ "src": "5446:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
+ "typeString": "function (address)"
+ }
+ },
+ "id": 43572,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5446:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43573,
+ "nodeType": "ExpressionStatement",
+ "src": "5446:28:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43581,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 43574,
+ "name": "exchangeRegistryId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43373,
+ "src": "5480:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43578,
+ "name": "exchangeIdentifier",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43466,
+ "src": "5528:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43576,
+ "name": "abi",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47575,
+ "src": "5511:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_abi",
+ "typeString": "abi"
+ }
+ },
+ "id": 43577,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "memberName": "encodePacked",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "5511:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
+ "typeString": "function () pure returns (bytes memory)"
+ }
+ },
+ "id": 43579,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5511:36:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes_memory_ptr",
+ "typeString": "bytes memory"
+ }
+ ],
+ "id": 43575,
+ "name": "keccak256",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47582,
+ "src": "5501:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
+ "typeString": "function (bytes memory) pure returns (bytes32)"
+ }
+ },
+ "id": 43580,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5501:47:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "5480:68:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "id": 43582,
+ "nodeType": "ExpressionStatement",
+ "src": "5480:68:137"
+ }
+ ]
+ },
+ "documentation": "@param _name The name of the stable token (English)\n@param _symbol A short symbol identifying the token (e.g. \"cUSD\")\n@param _decimals Tokens are divisible to this many decimal places.\n@param registryAddress Address of the Registry contract.\n@param inflationRate Weekly inflation rate.\n@param inflationFactorUpdatePeriod How often the inflation factor is updated, in seconds.\n@param initialBalanceAddresses Array of addresses with an initial balance.\n@param initialBalanceValues Array of balance values corresponding to initialBalanceAddresses.\n@param exchangeIdentifier String identifier of exchange in registry (for specific fiat pairs)",
+ "id": 43584,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 43469,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43468,
+ "name": "initializer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 4703,
+ "src": "4618:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "4618:11:137"
+ }
+ ],
+ "name": "initialize",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43467,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43448,
+ "name": "_name",
+ "nodeType": "VariableDeclaration",
+ "scope": 43584,
+ "src": "4303:21:137",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 43447,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "4303:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43450,
+ "name": "_symbol",
+ "nodeType": "VariableDeclaration",
+ "scope": 43584,
+ "src": "4330:23:137",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 43449,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "4330:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43452,
+ "name": "_decimals",
+ "nodeType": "VariableDeclaration",
+ "scope": 43584,
+ "src": "4359:15:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 43451,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "4359:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43454,
+ "name": "registryAddress",
+ "nodeType": "VariableDeclaration",
+ "scope": 43584,
+ "src": "4380:23:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43453,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4380:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43456,
+ "name": "inflationRate",
+ "nodeType": "VariableDeclaration",
+ "scope": 43584,
+ "src": "4409:21:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43455,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4409:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43458,
+ "name": "inflationFactorUpdatePeriod",
+ "nodeType": "VariableDeclaration",
+ "scope": 43584,
+ "src": "4436:35:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43457,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4436:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43461,
+ "name": "initialBalanceAddresses",
+ "nodeType": "VariableDeclaration",
+ "scope": 43584,
+ "src": "4477:42:137",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
+ "typeString": "address[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 43459,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "4477:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "id": 43460,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "4477:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
+ "typeString": "address[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43464,
+ "name": "initialBalanceValues",
+ "nodeType": "VariableDeclaration",
+ "scope": 43584,
+ "src": "4525:39:137",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
+ "typeString": "uint256[]"
+ },
+ "typeName": {
+ "baseType": {
+ "id": 43462,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "4525:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43463,
+ "length": null,
+ "nodeType": "ArrayTypeName",
+ "src": "4525:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
+ "typeString": "uint256[]"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43466,
+ "name": "exchangeIdentifier",
+ "nodeType": "VariableDeclaration",
+ "scope": 43584,
+ "src": "4570:34:137",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 43465,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "4570:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "4297:311:137"
+ },
+ "returnParameters": {
+ "id": 43470,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "4630:0:137"
+ },
+ "scope": 44644,
+ "src": "4278:1275:137",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 43630,
+ "nodeType": "Block",
+ "src": "5825:368:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 43598,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43596,
+ "name": "rate",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43586,
+ "src": "5839:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43597,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "5847:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "5839:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "4d7573742070726f766964652061206e6f6e2d7a65726f20696e666c6174696f6e20726174652e",
+ "id": 43599,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "5850:41:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_4c92d24b7841f674f98efc72380715bbc870a1e09e6cbb15da6807fbc6a83e3c",
+ "typeString": "literal_string \"Must provide a non-zero inflation rate.\""
+ },
+ "value": "Must provide a non-zero inflation rate."
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_4c92d24b7841f674f98efc72380715bbc870a1e09e6cbb15da6807fbc6a83e3c",
+ "typeString": "literal_string \"Must provide a non-zero inflation rate.\""
+ }
+ ],
+ "id": 43595,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "5831:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43600,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5831:61:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43601,
+ "nodeType": "ExpressionStatement",
+ "src": "5831:61:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 43605,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43603,
+ "name": "updatePeriod",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43588,
+ "src": "5906:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43604,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "5921:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "5906:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "757064617465506572696f64206d757374206265203e2030",
+ "id": 43606,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "5924:26:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_70c107d48e5d4c8ed0a1edb11ec9dc1cca74f185850a164579f8325099c75037",
+ "typeString": "literal_string \"updatePeriod must be > 0\""
+ },
+ "value": "updatePeriod must be > 0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_70c107d48e5d4c8ed0a1edb11ec9dc1cca74f185850a164579f8325099c75037",
+ "typeString": "literal_string \"updatePeriod must be > 0\""
+ }
+ ],
+ "id": 43602,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "5898:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43607,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5898:53:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43608,
+ "nodeType": "ExpressionStatement",
+ "src": "5898:53:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43616,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43609,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "5957:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43611,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "rate",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43362,
+ "src": "5957:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43614,
+ "name": "rate",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43586,
+ "src": "5996:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43612,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "5979:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 43613,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "wrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3044,
+ "src": "5979:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 43615,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "5979:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "src": "5957:44:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "id": 43617,
+ "nodeType": "ExpressionStatement",
+ "src": "5957:44:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43622,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43618,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "6007:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43620,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "memberName": "updatePeriod",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43366,
+ "src": "6007:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43621,
+ "name": "updatePeriod",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43588,
+ "src": "6037:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "6007:42:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43623,
+ "nodeType": "ExpressionStatement",
+ "src": "6007:42:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43625,
+ "name": "rate",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43586,
+ "src": "6095:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43626,
+ "name": "updatePeriod",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43588,
+ "src": "6107:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43627,
+ "name": "now",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47590,
+ "src": "6179:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43624,
+ "name": "InflationParametersUpdated",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43322,
+ "src": "6061:26:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
+ "typeString": "function (uint256,uint256,uint256)"
+ }
+ },
+ "id": 43628,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6061:127:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43629,
+ "nodeType": "EmitStatement",
+ "src": "6056:132:137"
+ }
+ ]
+ },
+ "documentation": "@notice Updates Inflation Parameters.\n@param rate New rate.\n@param updatePeriod How often inflationFactor is updated.",
+ "id": 43631,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 43591,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43590,
+ "name": "onlyOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 46383,
+ "src": "5787:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "5787:9:137"
+ },
+ {
+ "arguments": null,
+ "id": 43593,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43592,
+ "name": "updateInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43419,
+ "src": "5801:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "5801:21:137"
+ }
+ ],
+ "name": "setInflationParameters",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43589,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43586,
+ "name": "rate",
+ "nodeType": "VariableDeclaration",
+ "scope": 43631,
+ "src": "5734:12:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43585,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "5734:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43588,
+ "name": "updatePeriod",
+ "nodeType": "VariableDeclaration",
+ "scope": 43631,
+ "src": "5748:20:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43587,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "5748:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "5733:36:137"
+ },
+ "returnParameters": {
+ "id": 43594,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "5825:0:137"
+ },
+ "scope": 44644,
+ "src": "5702:491:137",
+ "stateMutability": "nonpayable",
+ "superFunction": 45349,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 43685,
+ "nodeType": "Block",
+ "src": "6592:296:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 43647,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43643,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43633,
+ "src": "6606:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43645,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6625:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 43644,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "6617:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 43646,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6617:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "6606:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "72657365727665642061646472657373203078302063616e6e6f74206861766520616c6c6f77616e6365",
+ "id": 43648,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6629:44:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_7de671b6ae78fe029c902b607a4a45ad03a25299ef0bdb1be389a1507e42c853",
+ "typeString": "literal_string \"reserved address 0x0 cannot have allowance\""
+ },
+ "value": "reserved address 0x0 cannot have allowance"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_7de671b6ae78fe029c902b607a4a45ad03a25299ef0bdb1be389a1507e42c853",
+ "typeString": "literal_string \"reserved address 0x0 cannot have allowance\""
+ }
+ ],
+ "id": 43642,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "6598:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43649,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6598:76:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43650,
+ "nodeType": "ExpressionStatement",
+ "src": "6598:76:137"
+ },
+ {
+ "assignments": [
+ 43652
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 43652,
+ "name": "oldValue",
+ "nodeType": "VariableDeclaration",
+ "scope": 43685,
+ "src": "6680:16:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43651,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "6680:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 43659,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43653,
+ "name": "allowed",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43360,
+ "src": "6699:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ }
+ },
+ "id": 43656,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43654,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "6707:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43655,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "6707:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "6699:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 43658,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 43657,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43633,
+ "src": "6719:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "6699:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "6680:47:137"
+ },
+ {
+ "assignments": [
+ 43661
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 43661,
+ "name": "newValue",
+ "nodeType": "VariableDeclaration",
+ "scope": 43685,
+ "src": "6733:16:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43660,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "6733:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 43666,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43664,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43635,
+ "src": "6765:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43662,
+ "name": "oldValue",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43652,
+ "src": "6752:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43663,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "6752:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 43665,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6752:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "6733:38:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43674,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43667,
+ "name": "allowed",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43360,
+ "src": "6777:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ }
+ },
+ "id": 43671,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43668,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "6785:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43669,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "6785:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "6777:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 43672,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 43670,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43633,
+ "src": "6797:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "6777:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43673,
+ "name": "newValue",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43661,
+ "src": "6808:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "6777:39:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43675,
+ "nodeType": "ExpressionStatement",
+ "src": "6777:39:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43677,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "6836:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43678,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "6836:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43679,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43633,
+ "src": "6848:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43680,
+ "name": "newValue",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43661,
+ "src": "6857:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43676,
+ "name": "Approval",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 46923,
+ "src": "6827:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,address,uint256)"
+ }
+ },
+ "id": 43681,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "6827:39:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43682,
+ "nodeType": "EmitStatement",
+ "src": "6822:44:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 43683,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "6879:4:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 43641,
+ "id": 43684,
+ "nodeType": "Return",
+ "src": "6872:11:137"
+ }
+ ]
+ },
+ "documentation": "@notice Increase the allowance of another user.\n@param spender The address which is being approved to spend StableToken.\n@param value The increment of the amount of StableToken approved to the spender.\n@return True if the transaction succeeds.",
+ "id": 43686,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 43638,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43637,
+ "name": "updateInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43419,
+ "src": "6549:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "6549:21:137"
+ }
+ ],
+ "name": "increaseAllowance",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43636,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43633,
+ "name": "spender",
+ "nodeType": "VariableDeclaration",
+ "scope": 43686,
+ "src": "6500:15:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43632,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "6500:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43635,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 43686,
+ "src": "6517:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43634,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "6517:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6499:32:137"
+ },
+ "returnParameters": {
+ "id": 43641,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43640,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43686,
+ "src": "6584:4:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 43639,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "6584:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "6583:6:137"
+ },
+ "scope": 44644,
+ "src": "6473:415:137",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 43731,
+ "nodeType": "Block",
+ "src": "7287:214:137",
+ "statements": [
+ {
+ "assignments": [
+ 43698
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 43698,
+ "name": "oldValue",
+ "nodeType": "VariableDeclaration",
+ "scope": 43731,
+ "src": "7293:16:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43697,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "7293:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 43705,
+ "initialValue": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43699,
+ "name": "allowed",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43360,
+ "src": "7312:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ }
+ },
+ "id": 43702,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43700,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "7320:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43701,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "7320:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "7312:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 43704,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 43703,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43688,
+ "src": "7332:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "7312:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "7293:47:137"
+ },
+ {
+ "assignments": [
+ 43707
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 43707,
+ "name": "newValue",
+ "nodeType": "VariableDeclaration",
+ "scope": 43731,
+ "src": "7346:16:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43706,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "7346:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 43712,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43710,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43690,
+ "src": "7378:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43708,
+ "name": "oldValue",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43698,
+ "src": "7365:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43709,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46188,
+ "src": "7365:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 43711,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7365:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "7346:38:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43720,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43713,
+ "name": "allowed",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43360,
+ "src": "7390:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ }
+ },
+ "id": 43717,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43714,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "7398:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43715,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "7398:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "7390:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 43718,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 43716,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43688,
+ "src": "7410:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "7390:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43719,
+ "name": "newValue",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43707,
+ "src": "7421:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "7390:39:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43721,
+ "nodeType": "ExpressionStatement",
+ "src": "7390:39:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43723,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "7449:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43724,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "7449:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43725,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43688,
+ "src": "7461:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43726,
+ "name": "newValue",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43707,
+ "src": "7470:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43722,
+ "name": "Approval",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 46923,
+ "src": "7440:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,address,uint256)"
+ }
+ },
+ "id": 43727,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7440:39:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43728,
+ "nodeType": "EmitStatement",
+ "src": "7435:44:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 43729,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "7492:4:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 43696,
+ "id": 43730,
+ "nodeType": "Return",
+ "src": "7485:11:137"
+ }
+ ]
+ },
+ "documentation": "@notice Decrease the allowance of another user.\n@param spender The address which is being approved to spend StableToken.\n@param value The decrement of the amount of StableToken approved to the spender.\n@return True if the transaction succeeds.",
+ "id": 43732,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 43693,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43692,
+ "name": "updateInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43419,
+ "src": "7244:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "7244:21:137"
+ }
+ ],
+ "name": "decreaseAllowance",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43691,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43688,
+ "name": "spender",
+ "nodeType": "VariableDeclaration",
+ "scope": 43732,
+ "src": "7195:15:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43687,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "7195:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43690,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 43732,
+ "src": "7212:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43689,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "7212:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "7194:32:137"
+ },
+ "returnParameters": {
+ "id": 43696,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43695,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43732,
+ "src": "7279:4:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 43694,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "7279:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "7278:6:137"
+ },
+ "scope": 44644,
+ "src": "7168:333:137",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 43770,
+ "nodeType": "Block",
+ "src": "7885:193:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 43748,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43744,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43734,
+ "src": "7899:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43746,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "7918:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 43745,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "7910:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 43747,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7910:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "7899:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "72657365727665642061646472657373203078302063616e6e6f74206861766520616c6c6f77616e6365",
+ "id": 43749,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "7922:44:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_7de671b6ae78fe029c902b607a4a45ad03a25299ef0bdb1be389a1507e42c853",
+ "typeString": "literal_string \"reserved address 0x0 cannot have allowance\""
+ },
+ "value": "reserved address 0x0 cannot have allowance"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_7de671b6ae78fe029c902b607a4a45ad03a25299ef0bdb1be389a1507e42c853",
+ "typeString": "literal_string \"reserved address 0x0 cannot have allowance\""
+ }
+ ],
+ "id": 43743,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "7891:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43750,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "7891:76:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43751,
+ "nodeType": "ExpressionStatement",
+ "src": "7891:76:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43759,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43752,
+ "name": "allowed",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43360,
+ "src": "7973:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ }
+ },
+ "id": 43756,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43753,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "7981:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43754,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "7981:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "7973:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 43757,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 43755,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43734,
+ "src": "7993:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "7973:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "id": 43758,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43736,
+ "src": "8004:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "7973:36:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43760,
+ "nodeType": "ExpressionStatement",
+ "src": "7973:36:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43762,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "8029:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43763,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8029:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43764,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43734,
+ "src": "8041:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43765,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43736,
+ "src": "8050:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43761,
+ "name": "Approval",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 46923,
+ "src": "8020:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,address,uint256)"
+ }
+ },
+ "id": 43766,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8020:36:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43767,
+ "nodeType": "EmitStatement",
+ "src": "8015:41:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 43768,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8069:4:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 43742,
+ "id": 43769,
+ "nodeType": "Return",
+ "src": "8062:11:137"
+ }
+ ]
+ },
+ "documentation": "@notice Approve a user to transfer StableToken on behalf of another user.\n@param spender The address which is being approved to spend StableToken.\n@param value The amount of StableToken approved to the spender.\n@return True if the transaction succeeds.",
+ "id": 43771,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 43739,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43738,
+ "name": "updateInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43419,
+ "src": "7848:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "7848:21:137"
+ }
+ ],
+ "name": "approve",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43737,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43734,
+ "name": "spender",
+ "nodeType": "VariableDeclaration",
+ "scope": 43771,
+ "src": "7807:15:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43733,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "7807:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43736,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 43771,
+ "src": "7824:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43735,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "7824:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "7806:32:137"
+ },
+ "returnParameters": {
+ "id": 43742,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43741,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43771,
+ "src": "7879:4:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 43740,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "7879:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "7878:6:137"
+ },
+ "scope": 44644,
+ "src": "7790:288:137",
+ "stateMutability": "nonpayable",
+ "superFunction": 46896,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 43815,
+ "nodeType": "Block",
+ "src": "8344:312:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 43806,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 43798,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 43790,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43783,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "8365:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43784,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8365:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 43787,
+ "name": "getExchangeRegistryId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44219,
+ "src": "8407:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
+ "typeString": "function () view returns (bytes32)"
+ }
+ },
+ "id": 43788,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8407:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43785,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8371,
+ "src": "8379:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IRegistry_$9598",
+ "typeString": "contract IRegistry"
+ }
+ },
+ "id": 43786,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getAddressForOrDie",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 9566,
+ "src": "8379:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (bytes32) view external returns (address)"
+ }
+ },
+ "id": 43789,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8379:52:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "8365:66:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 43797,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43791,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "8443:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43792,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8443:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43795,
+ "name": "VALIDATORS_REGISTRY_ID",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8369,
+ "src": "8480:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43793,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8371,
+ "src": "8457:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IRegistry_$9598",
+ "typeString": "contract IRegistry"
+ }
+ },
+ "id": 43794,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getAddressFor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 9573,
+ "src": "8457:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (bytes32) view external returns (address)"
+ }
+ },
+ "id": 43796,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8457:46:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "8443:60:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "8365:138:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 43805,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43799,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "8515:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43800,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "8515:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43803,
+ "name": "GRANDA_MENTO_REGISTRY_ID",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43342,
+ "src": "8552:24:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43801,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8371,
+ "src": "8529:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IRegistry_$9598",
+ "typeString": "contract IRegistry"
+ }
+ },
+ "id": 43802,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getAddressFor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 9573,
+ "src": "8529:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (bytes32) view external returns (address)"
+ }
+ },
+ "id": 43804,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8529:48:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "8515:62:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "8365:212:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "53656e646572206e6f7420617574686f72697a656420746f206d696e74",
+ "id": 43807,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8585:31:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_3737503fe6cc6878a4dddaff8d014dad7e24b67dfad3278c7f32e6e17e23e5fa",
+ "typeString": "literal_string \"Sender not authorized to mint\""
+ },
+ "value": "Sender not authorized to mint"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_3737503fe6cc6878a4dddaff8d014dad7e24b67dfad3278c7f32e6e17e23e5fa",
+ "typeString": "literal_string \"Sender not authorized to mint\""
+ }
+ ],
+ "id": 43782,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "8350:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43808,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8350:272:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43809,
+ "nodeType": "ExpressionStatement",
+ "src": "8350:272:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43811,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43773,
+ "src": "8641:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43812,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43775,
+ "src": "8645:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43810,
+ "name": "_mint",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43878,
+ "src": "8635:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (address,uint256) returns (bool)"
+ }
+ },
+ "id": 43813,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8635:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 43781,
+ "id": 43814,
+ "nodeType": "Return",
+ "src": "8628:23:137"
+ }
+ ]
+ },
+ "documentation": "@notice Mints new StableToken and gives it to 'to'.\n@param to The account for which to mint tokens.\n@param value The amount of StableToken to mint.",
+ "id": 43816,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 43778,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43777,
+ "name": "updateInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43419,
+ "src": "8307:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "8307:21:137"
+ }
+ ],
+ "name": "mint",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43776,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43773,
+ "name": "to",
+ "nodeType": "VariableDeclaration",
+ "scope": 43816,
+ "src": "8271:10:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43772,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "8271:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43775,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 43816,
+ "src": "8283:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43774,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "8283:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "8270:27:137"
+ },
+ "returnParameters": {
+ "id": 43781,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43780,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43816,
+ "src": "8338:4:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 43779,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "8338:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "8337:6:137"
+ },
+ "scope": 44644,
+ "src": "8257:399:137",
+ "stateMutability": "nonpayable",
+ "superFunction": 45335,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 43877,
+ "nodeType": "Block",
+ "src": "8900:323:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 43830,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43826,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43818,
+ "src": "8914:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43828,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8928:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 43827,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "8920:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 43829,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8920:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "8914:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "3020697320612072657365727665642061646472657373",
+ "id": 43831,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8932:25:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_878e7ba3f3409c291a727d099ef15162972b4804c774d0c483b902d05a3f971a",
+ "typeString": "literal_string \"0 is a reserved address\""
+ },
+ "value": "0 is a reserved address"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_878e7ba3f3409c291a727d099ef15162972b4804c774d0c483b902d05a3f971a",
+ "typeString": "literal_string \"0 is a reserved address\""
+ }
+ ],
+ "id": 43825,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "8906:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43832,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "8906:52:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43833,
+ "nodeType": "ExpressionStatement",
+ "src": "8906:52:137"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 43836,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43834,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43820,
+ "src": "8968:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43835,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8977:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "8968:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 43840,
+ "nodeType": "IfStatement",
+ "src": "8964:42:137",
+ "trueBody": {
+ "id": 43839,
+ "nodeType": "Block",
+ "src": "8980:26:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 43837,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "8995:4:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 43824,
+ "id": 43838,
+ "nodeType": "Return",
+ "src": "8988:11:137"
+ }
+ ]
+ }
+ },
+ {
+ "assignments": [
+ 43842
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 43842,
+ "name": "units",
+ "nodeType": "VariableDeclaration",
+ "scope": 43877,
+ "src": "9012:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43841,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "9012:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 43848,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43844,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "9042:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43845,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "9042:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43846,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43820,
+ "src": "9065:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43843,
+ "name": "_valueToUnits",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44268,
+ "src": "9028:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 43847,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9028:43:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "9012:59:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43854,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 43849,
+ "name": "totalSupply_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43354,
+ "src": "9077:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43852,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43842,
+ "src": "9109:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43850,
+ "name": "totalSupply_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43354,
+ "src": "9092:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43851,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "9092:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 43853,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9092:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "9077:38:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43855,
+ "nodeType": "ExpressionStatement",
+ "src": "9077:38:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43865,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43856,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "9121:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 43858,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 43857,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43818,
+ "src": "9130:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "9121:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43863,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43842,
+ "src": "9153:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43859,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "9136:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 43861,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 43860,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43818,
+ "src": "9145:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "9136:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43862,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "9136:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 43864,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9136:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "9121:38:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43866,
+ "nodeType": "ExpressionStatement",
+ "src": "9121:38:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43869,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "9187:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 43868,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "9179:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 43870,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9179:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43871,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43818,
+ "src": "9191:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43872,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43820,
+ "src": "9195:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43867,
+ "name": "Transfer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 43330
+ ],
+ "referencedDeclaration": 43330,
+ "src": "9170:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,address,uint256)"
+ }
+ },
+ "id": 43873,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9170:31:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43874,
+ "nodeType": "EmitStatement",
+ "src": "9165:36:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 43875,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "9214:4:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 43824,
+ "id": 43876,
+ "nodeType": "Return",
+ "src": "9207:11:137"
+ }
+ ]
+ },
+ "documentation": "@notice Mints new StableToken and gives it to 'to'.\n@param to The account for which to mint tokens.\n@param value The amount of StableToken to mint.",
+ "id": 43878,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "_mint",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43821,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43818,
+ "name": "to",
+ "nodeType": "VariableDeclaration",
+ "scope": 43878,
+ "src": "8850:10:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43817,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "8850:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43820,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 43878,
+ "src": "8862:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43819,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "8862:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "8849:27:137"
+ },
+ "returnParameters": {
+ "id": 43824,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43823,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43878,
+ "src": "8894:4:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 43822,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "8894:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "8893:6:137"
+ },
+ "scope": 44644,
+ "src": "8835:388:137",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "private"
+ },
+ {
+ "body": {
+ "id": 43906,
+ "nodeType": "Block",
+ "src": "9634:104:137",
+ "statements": [
+ {
+ "assignments": [
+ 43894
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 43894,
+ "name": "succeeded",
+ "nodeType": "VariableDeclaration",
+ "scope": 43906,
+ "src": "9640:14:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 43893,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "9640:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 43899,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43896,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43880,
+ "src": "9666:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43897,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43882,
+ "src": "9670:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43895,
+ "name": "transfer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44402,
+ "src": "9657:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (address,uint256) returns (bool)"
+ }
+ },
+ "id": 43898,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9657:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "9640:36:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43901,
+ "name": "comment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43884,
+ "src": "9703:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string calldata"
+ }
+ ],
+ "id": 43900,
+ "name": "TransferComment",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43334,
+ "src": "9687:15:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (string memory)"
+ }
+ },
+ "id": 43902,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9687:24:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43903,
+ "nodeType": "EmitStatement",
+ "src": "9682:29:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43904,
+ "name": "succeeded",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43894,
+ "src": "9724:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 43892,
+ "id": 43905,
+ "nodeType": "Return",
+ "src": "9717:16:137"
+ }
+ ]
+ },
+ "documentation": "@notice Transfer token for a specified address\n@param to The address to transfer to.\n@param value The amount to be transferred.\n@param comment The transfer comment.\n@return True if the transaction succeeds.",
+ "id": 43907,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 43887,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43886,
+ "name": "updateInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43419,
+ "src": "9569:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "9569:21:137"
+ },
+ {
+ "arguments": null,
+ "id": 43889,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43888,
+ "name": "onlyWhenNotFrozen",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3631,
+ "src": "9595:17:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "9595:17:137"
+ }
+ ],
+ "name": "transferWithComment",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43885,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43880,
+ "name": "to",
+ "nodeType": "VariableDeclaration",
+ "scope": 43907,
+ "src": "9500:10:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43879,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "9500:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43882,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 43907,
+ "src": "9512:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43881,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "9512:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43884,
+ "name": "comment",
+ "nodeType": "VariableDeclaration",
+ "scope": 43907,
+ "src": "9527:23:137",
+ "stateVariable": false,
+ "storageLocation": "calldata",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_calldata_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 43883,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "9527:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "9499:52:137"
+ },
+ "returnParameters": {
+ "id": 43892,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43891,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43907,
+ "src": "9626:4:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 43890,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "9626:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "9625:6:137"
+ },
+ "scope": 44644,
+ "src": "9471:267:137",
+ "stateMutability": "nonpayable",
+ "superFunction": 9394,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 43985,
+ "nodeType": "Block",
+ "src": "9945:527:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 43932,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 43924,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43917,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "9966:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43918,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "9966:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 43921,
+ "name": "getExchangeRegistryId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44219,
+ "src": "10008:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
+ "typeString": "function () view returns (bytes32)"
+ }
+ },
+ "id": 43922,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10008:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43919,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8371,
+ "src": "9980:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IRegistry_$9598",
+ "typeString": "contract IRegistry"
+ }
+ },
+ "id": 43920,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getAddressForOrDie",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 9566,
+ "src": "9980:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (bytes32) view external returns (address)"
+ }
+ },
+ "id": 43923,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9980:52:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "9966:66:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 43931,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43925,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "10044:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43926,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10044:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43929,
+ "name": "GRANDA_MENTO_REGISTRY_ID",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43342,
+ "src": "10081:24:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43927,
+ "name": "registry",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8371,
+ "src": "10058:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_contract$_IRegistry_$9598",
+ "typeString": "contract IRegistry"
+ }
+ },
+ "id": 43928,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "getAddressFor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 9573,
+ "src": "10058:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
+ "typeString": "function (bytes32) view external returns (address)"
+ }
+ },
+ "id": 43930,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10058:48:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "src": "10044:62:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "9966:140:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "53656e646572206e6f7420617574686f72697a656420746f206275726e",
+ "id": 43933,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10114:31:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_d67ba2d7c0ccfeb3def0e326717659a00695ee5054ea650f29641323d243a49d",
+ "typeString": "literal_string \"Sender not authorized to burn\""
+ },
+ "value": "Sender not authorized to burn"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_d67ba2d7c0ccfeb3def0e326717659a00695ee5054ea650f29641323d243a49d",
+ "typeString": "literal_string \"Sender not authorized to burn\""
+ }
+ ],
+ "id": 43916,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "9951:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43934,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "9951:200:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43935,
+ "nodeType": "ExpressionStatement",
+ "src": "9951:200:137"
+ },
+ {
+ "assignments": [
+ 43937
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 43937,
+ "name": "units",
+ "nodeType": "VariableDeclaration",
+ "scope": 43985,
+ "src": "10157:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43936,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "10157:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 43943,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43939,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "10187:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 43940,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "10187:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43941,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43909,
+ "src": "10210:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43938,
+ "name": "_valueToUnits",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44268,
+ "src": "10173:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 43942,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10173:43:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "10157:59:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 43950,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 43945,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43937,
+ "src": "10230:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43946,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "10239:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 43949,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43947,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "10248:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43948,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10248:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "10239:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "10230:29:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "76616c75652065786365656465642062616c616e6365206f662073656e646572",
+ "id": 43951,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10261:34:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_f643947651ac946f0f7de0ae2caa7ea5b3b2d9acb4d86798e4d8321e4be4c83c",
+ "typeString": "literal_string \"value exceeded balance of sender\""
+ },
+ "value": "value exceeded balance of sender"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_f643947651ac946f0f7de0ae2caa7ea5b3b2d9acb4d86798e4d8321e4be4c83c",
+ "typeString": "literal_string \"value exceeded balance of sender\""
+ }
+ ],
+ "id": 43944,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "10222:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 43952,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10222:74:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43953,
+ "nodeType": "ExpressionStatement",
+ "src": "10222:74:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43959,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 43954,
+ "name": "totalSupply_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43354,
+ "src": "10302:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43957,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43937,
+ "src": "10334:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 43955,
+ "name": "totalSupply_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43354,
+ "src": "10317:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43956,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46188,
+ "src": "10317:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 43958,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10317:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "10302:38:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43960,
+ "nodeType": "ExpressionStatement",
+ "src": "10302:38:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 43972,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43961,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "10346:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 43964,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43962,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "10355:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43963,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10355:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "10346:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 43970,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43937,
+ "src": "10394:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 43965,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "10369:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 43968,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43966,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "10378:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43967,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10378:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "10369:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43969,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46188,
+ "src": "10369:24:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 43971,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10369:31:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "10346:54:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 43973,
+ "nodeType": "ExpressionStatement",
+ "src": "10346:54:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 43975,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "10420:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 43976,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "10420:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 43978,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10440:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 43977,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "10432:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 43979,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10432:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 43980,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43937,
+ "src": "10444:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 43974,
+ "name": "Transfer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 43330
+ ],
+ "referencedDeclaration": 43330,
+ "src": "10411:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,address,uint256)"
+ }
+ },
+ "id": 43981,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10411:39:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 43982,
+ "nodeType": "EmitStatement",
+ "src": "10406:44:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 43983,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "10463:4:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 43915,
+ "id": 43984,
+ "nodeType": "Return",
+ "src": "10456:11:137"
+ }
+ ]
+ },
+ "documentation": "@notice Burns StableToken from the balance of msg.sender.\n@param value The amount of StableToken to burn.",
+ "id": 43986,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 43912,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43911,
+ "name": "updateInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43419,
+ "src": "9908:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "9908:21:137"
+ }
+ ],
+ "name": "burn",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43910,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43909,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 43986,
+ "src": "9884:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43908,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "9884:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "9883:15:137"
+ },
+ "returnParameters": {
+ "id": 43915,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43914,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 43986,
+ "src": "9939:4:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 43913,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "9939:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "9938:6:137"
+ },
+ "scope": 44644,
+ "src": "9870:602:137",
+ "stateMutability": "nonpayable",
+ "superFunction": 45342,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44086,
+ "nodeType": "Block",
+ "src": "10935:573:137",
+ "statements": [
+ {
+ "assignments": [
+ 44002
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44002,
+ "name": "units",
+ "nodeType": "VariableDeclaration",
+ "scope": 44086,
+ "src": "10941:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44001,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "10941:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44008,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44004,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "10971:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44005,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "10971:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44006,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43992,
+ "src": "10994:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44003,
+ "name": "_valueToUnits",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44268,
+ "src": "10957:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44007,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "10957:43:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "10941:59:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 44014,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 44010,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43990,
+ "src": "11014:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 44012,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11028:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 44011,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "11020:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 44013,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11020:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "11014:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "7472616e7366657220617474656d7074656420746f207265736572766564206164647265737320307830",
+ "id": 44015,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11032:44:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_d70e6696a6c0b4643ee1ebae9ec096136ed54277bf37d57ae5b5cfc09b48d8e8",
+ "typeString": "literal_string \"transfer attempted to reserved address 0x0\""
+ },
+ "value": "transfer attempted to reserved address 0x0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_d70e6696a6c0b4643ee1ebae9ec096136ed54277bf37d57ae5b5cfc09b48d8e8",
+ "typeString": "literal_string \"transfer attempted to reserved address 0x0\""
+ }
+ ],
+ "id": 44009,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "11006:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 44016,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11006:71:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44017,
+ "nodeType": "ExpressionStatement",
+ "src": "11006:71:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 44023,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 44019,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44002,
+ "src": "11091:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44020,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "11100:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44022,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44021,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43988,
+ "src": "11109:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11100:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "11091:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "7472616e736665722076616c75652065786365656465642062616c616e6365206f662073656e646572",
+ "id": 44024,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11116:43:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_993a5b9c92acf262ea69aa9bd83d497a43d16d43273a37ad498a45ebc1a76158",
+ "typeString": "literal_string \"transfer value exceeded balance of sender\""
+ },
+ "value": "transfer value exceeded balance of sender"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_993a5b9c92acf262ea69aa9bd83d497a43d16d43273a37ad498a45ebc1a76158",
+ "typeString": "literal_string \"transfer value exceeded balance of sender\""
+ }
+ ],
+ "id": 44018,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "11083:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 44025,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11083:77:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44026,
+ "nodeType": "ExpressionStatement",
+ "src": "11083:77:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 44035,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 44028,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43992,
+ "src": "11181:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44029,
+ "name": "allowed",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43360,
+ "src": "11190:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ }
+ },
+ "id": 44031,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44030,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43988,
+ "src": "11198:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11190:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44034,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44032,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "11204:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 44033,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11204:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11190:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "11181:34:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "7472616e736665722076616c75652065786365656465642073656e646572277320616c6c6f77616e636520666f7220726563697069656e74",
+ "id": 44036,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11223:58:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_a0229c57ce32ed84917ea2237a54d8faf8f0feabfcfed0ba102b766722b05fc5",
+ "typeString": "literal_string \"transfer value exceeded sender's allowance for recipient\""
+ },
+ "value": "transfer value exceeded sender's allowance for recipient"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_a0229c57ce32ed84917ea2237a54d8faf8f0feabfcfed0ba102b766722b05fc5",
+ "typeString": "literal_string \"transfer value exceeded sender's allowance for recipient\""
+ }
+ ],
+ "id": 44027,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "11166:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 44037,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11166:121:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44038,
+ "nodeType": "ExpressionStatement",
+ "src": "11166:121:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44048,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44039,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "11294:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44041,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44040,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43990,
+ "src": "11303:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "11294:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44046,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44002,
+ "src": "11326:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44042,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "11309:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44044,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44043,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43990,
+ "src": "11318:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11309:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44045,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "11309:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44047,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11309:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "11294:38:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44049,
+ "nodeType": "ExpressionStatement",
+ "src": "11294:38:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44059,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44050,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "11338:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44052,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44051,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43988,
+ "src": "11347:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "11338:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44057,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44002,
+ "src": "11374:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44053,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "11355:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44055,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44054,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43988,
+ "src": "11364:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11355:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44056,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46188,
+ "src": "11355:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44058,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11355:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "11338:42:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44060,
+ "nodeType": "ExpressionStatement",
+ "src": "11338:42:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44076,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44061,
+ "name": "allowed",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43360,
+ "src": "11386:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ }
+ },
+ "id": 44065,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44062,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43988,
+ "src": "11394:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11386:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44066,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44063,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "11400:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 44064,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11400:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "11386:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44074,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43992,
+ "src": "11444:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44067,
+ "name": "allowed",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43360,
+ "src": "11414:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ }
+ },
+ "id": 44069,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44068,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43988,
+ "src": "11422:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11414:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44072,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44070,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "11428:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 44071,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "11428:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "11414:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44073,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46188,
+ "src": "11414:29:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44075,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11414:36:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "11386:64:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44077,
+ "nodeType": "ExpressionStatement",
+ "src": "11386:64:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44079,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43988,
+ "src": "11470:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44080,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43990,
+ "src": "11476:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44081,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43992,
+ "src": "11480:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44078,
+ "name": "Transfer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 43330
+ ],
+ "referencedDeclaration": 43330,
+ "src": "11461:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,address,uint256)"
+ }
+ },
+ "id": 44082,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "11461:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44083,
+ "nodeType": "EmitStatement",
+ "src": "11456:30:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 44084,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "11499:4:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 44000,
+ "id": 44085,
+ "nodeType": "Return",
+ "src": "11492:11:137"
+ }
+ ]
+ },
+ "documentation": "@notice Transfers StableToken from one address to another on behalf of a user.\n@param from The address to transfer StableToken from.\n@param to The address to transfer StableToken to.\n@param value The amount of StableToken to transfer.\n@return True if the transaction succeeds.",
+ "id": 44087,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 43995,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43994,
+ "name": "updateInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43419,
+ "src": "10870:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "10870:21:137"
+ },
+ {
+ "arguments": null,
+ "id": 43997,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 43996,
+ "name": "onlyWhenNotFrozen",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3631,
+ "src": "10896:17:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "10896:17:137"
+ }
+ ],
+ "name": "transferFrom",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 43993,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43988,
+ "name": "from",
+ "nodeType": "VariableDeclaration",
+ "scope": 44087,
+ "src": "10812:12:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43987,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "10812:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43990,
+ "name": "to",
+ "nodeType": "VariableDeclaration",
+ "scope": 44087,
+ "src": "10826:10:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 43989,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "10826:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 43992,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 44087,
+ "src": "10838:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 43991,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "10838:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "10811:41:137"
+ },
+ "returnParameters": {
+ "id": 44000,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 43999,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44087,
+ "src": "10927:4:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 43998,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "10927:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "10926:6:137"
+ },
+ "scope": 44644,
+ "src": "10790:718:137",
+ "stateMutability": "nonpayable",
+ "superFunction": 46907,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44094,
+ "nodeType": "Block",
+ "src": "11621:23:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44092,
+ "name": "name_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43344,
+ "src": "11634:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "functionReturnParameters": 44091,
+ "id": 44093,
+ "nodeType": "Return",
+ "src": "11627:12:137"
+ }
+ ]
+ },
+ "documentation": "@return The name of the stable token.",
+ "id": 44095,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "name",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44088,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "11580:2:137"
+ },
+ "returnParameters": {
+ "id": 44091,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44090,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44095,
+ "src": "11606:13:137",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 44089,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "11606:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "11605:15:137"
+ },
+ "scope": 44644,
+ "src": "11567:77:137",
+ "stateMutability": "view",
+ "superFunction": 9399,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44102,
+ "nodeType": "Block",
+ "src": "11761:25:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44100,
+ "name": "symbol_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43346,
+ "src": "11774:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage",
+ "typeString": "string storage ref"
+ }
+ },
+ "functionReturnParameters": 44099,
+ "id": 44101,
+ "nodeType": "Return",
+ "src": "11767:14:137"
+ }
+ ]
+ },
+ "documentation": "@return The symbol of the stable token.",
+ "id": 44103,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "symbol",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44096,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "11720:2:137"
+ },
+ "returnParameters": {
+ "id": 44099,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44098,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44103,
+ "src": "11746:13:137",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_memory_ptr",
+ "typeString": "string"
+ },
+ "typeName": {
+ "id": 44097,
+ "name": "string",
+ "nodeType": "ElementaryTypeName",
+ "src": "11746:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_string_storage_ptr",
+ "typeString": "string"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "11745:15:137"
+ },
+ "scope": 44644,
+ "src": "11705:81:137",
+ "stateMutability": "view",
+ "superFunction": 9404,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44110,
+ "nodeType": "Block",
+ "src": "11929:27:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44108,
+ "name": "decimals_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43348,
+ "src": "11942:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "functionReturnParameters": 44107,
+ "id": 44109,
+ "nodeType": "Return",
+ "src": "11935:16:137"
+ }
+ ]
+ },
+ "documentation": "@return The number of decimal places to which StableToken is divisible.",
+ "id": 44111,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "decimals",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44104,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "11896:2:137"
+ },
+ "returnParameters": {
+ "id": 44107,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44106,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44111,
+ "src": "11922:5:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ },
+ "typeName": {
+ "id": 44105,
+ "name": "uint8",
+ "nodeType": "ElementaryTypeName",
+ "src": "11922:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "11921:7:137"
+ },
+ "scope": 44644,
+ "src": "11879:77:137",
+ "stateMutability": "view",
+ "superFunction": 9409,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44126,
+ "nodeType": "Block",
+ "src": "12328:48:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44120,
+ "name": "allowed",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43360,
+ "src": "12341:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
+ "typeString": "mapping(address => mapping(address => uint256))"
+ }
+ },
+ "id": 44122,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44121,
+ "name": "accountOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44113,
+ "src": "12349:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12341:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44124,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44123,
+ "name": "spender",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44115,
+ "src": "12363:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12341:30:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 44119,
+ "id": 44125,
+ "nodeType": "Return",
+ "src": "12334:37:137"
+ }
+ ]
+ },
+ "documentation": "@notice Gets the amount of owner's StableToken allowed to be spent by spender.\n@param accountOwner The owner of the StableToken.\n@param spender The spender of the StableToken.\n@return The amount of StableToken owner is allowing spender to spend.",
+ "id": 44127,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "allowance",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44116,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44113,
+ "name": "accountOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 44127,
+ "src": "12257:20:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44112,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "12257:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44115,
+ "name": "spender",
+ "nodeType": "VariableDeclaration",
+ "scope": 44127,
+ "src": "12279:15:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44114,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "12279:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "12256:39:137"
+ },
+ "returnParameters": {
+ "id": 44119,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44118,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44127,
+ "src": "12319:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44117,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12319:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "12318:9:137"
+ },
+ "scope": 44644,
+ "src": "12238:138:137",
+ "stateMutability": "view",
+ "superFunction": 46887,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44140,
+ "nodeType": "Block",
+ "src": "12678:54:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44135,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "12704:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44137,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44136,
+ "name": "accountOwner",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44129,
+ "src": "12713:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "12704:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44134,
+ "name": "unitsToValue",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44248,
+ "src": "12691:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (uint256) view returns (uint256)"
+ }
+ },
+ "id": 44138,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12691:36:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 44133,
+ "id": 44139,
+ "nodeType": "Return",
+ "src": "12684:43:137"
+ }
+ ]
+ },
+ "documentation": "@notice Gets the balance of the specified address using the presently stored inflation factor.\n@param accountOwner The address to query the balance of.\n@return The balance of the specified address.",
+ "id": 44141,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "balanceOf",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44130,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44129,
+ "name": "accountOwner",
+ "nodeType": "VariableDeclaration",
+ "scope": 44141,
+ "src": "12624:20:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44128,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "12624:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "12623:22:137"
+ },
+ "returnParameters": {
+ "id": 44133,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44132,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44141,
+ "src": "12669:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44131,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12669:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "12668:9:137"
+ },
+ "scope": 44644,
+ "src": "12605:127:137",
+ "stateMutability": "view",
+ "superFunction": 46869,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44150,
+ "nodeType": "Block",
+ "src": "12930:44:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44147,
+ "name": "totalSupply_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43354,
+ "src": "12956:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44146,
+ "name": "unitsToValue",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44248,
+ "src": "12943:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (uint256) view returns (uint256)"
+ }
+ },
+ "id": 44148,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "12943:26:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 44145,
+ "id": 44149,
+ "nodeType": "Return",
+ "src": "12936:33:137"
+ }
+ ]
+ },
+ "documentation": "@return The total value of StableToken in existence\n@dev Though totalSupply_ is stored in units, this returns value.",
+ "id": 44151,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "totalSupply",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44142,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "12895:2:137"
+ },
+ "returnParameters": {
+ "id": 44145,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44144,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44151,
+ "src": "12921:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44143,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "12921:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "12920:9:137"
+ },
+ "scope": 44644,
+ "src": "12875:99:137",
+ "stateMutability": "view",
+ "superFunction": 46862,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44176,
+ "nodeType": "Block",
+ "src": "13218:173:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44162,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "13239:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44163,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "rate",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43362,
+ "src": "13239:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "id": 44164,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unwrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3055,
+ "src": "13239:26:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)"
+ }
+ },
+ "id": 44165,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13239:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44166,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "13275:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44167,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "13275:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "id": 44168,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unwrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3055,
+ "src": "13275:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)"
+ }
+ },
+ "id": 44169,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13275:30:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44170,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "13313:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44171,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "updatePeriod",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43366,
+ "src": "13313:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44172,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "13348:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44173,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factorLastUpdated",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43368,
+ "src": "13348:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 44174,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "13231:155:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
+ "typeString": "tuple(uint256,uint256,uint256,uint256)"
+ }
+ },
+ "functionReturnParameters": 44161,
+ "id": 44175,
+ "nodeType": "Return",
+ "src": "13224:162:137"
+ }
+ ]
+ },
+ "documentation": "@notice gets inflation parameters.\n@return rate\n@return factor\n@return updatePeriod\n@return factorLastUpdated",
+ "id": 44177,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getInflationParameters",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44152,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "13156:2:137"
+ },
+ "returnParameters": {
+ "id": 44161,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44154,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44177,
+ "src": "13182:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44153,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "13182:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44156,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44177,
+ "src": "13191:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44155,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "13191:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44158,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44177,
+ "src": "13200:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44157,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "13200:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44160,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44177,
+ "src": "13209:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44159,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "13209:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "13181:36:137"
+ },
+ "scope": 44644,
+ "src": "13125:266:137",
+ "stateMutability": "view",
+ "superFunction": 45374,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44200,
+ "nodeType": "Block",
+ "src": "13843:181:137",
+ "statements": [
+ {
+ "assignments": [
+ 44187
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44187,
+ "name": "updatedInflationFactor",
+ "nodeType": "VariableDeclaration",
+ "scope": 44200,
+ "src": "13849:50:137",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 44186,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "13849:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44188,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "13849:50:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44193,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 44189,
+ "name": "updatedInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44187,
+ "src": "13907:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ null
+ ],
+ "id": 44190,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "TupleExpression",
+ "src": "13906:26:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$__$",
+ "typeString": "tuple(struct FixidityLib.Fraction memory,)"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 44191,
+ "name": "getUpdatedInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44383,
+ "src": "13935:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$",
+ "typeString": "function () view returns (struct FixidityLib.Fraction memory,uint256)"
+ }
+ },
+ "id": 44192,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13935:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$",
+ "typeString": "tuple(struct FixidityLib.Fraction memory,uint256)"
+ }
+ },
+ "src": "13906:56:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44194,
+ "nodeType": "ExpressionStatement",
+ "src": "13906:56:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44196,
+ "name": "updatedInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44187,
+ "src": "13989:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44197,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44179,
+ "src": "14013:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44195,
+ "name": "_valueToUnits",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44268,
+ "src": "13975:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44198,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "13975:44:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 44183,
+ "id": 44199,
+ "nodeType": "Return",
+ "src": "13968:51:137"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the units for a given value given the current inflation factor.\n@param value The value to convert to units.\n@return The units corresponding to `value` given the current inflation factor.\n@dev We don't compute the updated inflationFactor here because\nwe assume any function calling this will have updated the inflation factor.",
+ "id": 44201,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "valueToUnits",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44180,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44179,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 44201,
+ "src": "13796:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44178,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "13796:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "13795:15:137"
+ },
+ "returnParameters": {
+ "id": 44183,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44182,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44201,
+ "src": "13834:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44181,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "13834:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "13833:9:137"
+ },
+ "scope": 44644,
+ "src": "13774:250:137",
+ "stateMutability": "view",
+ "superFunction": 45356,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44218,
+ "nodeType": "Block",
+ "src": "14673:136:137",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "id": 44210,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 44206,
+ "name": "exchangeRegistryId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43373,
+ "src": "14683:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 44208,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "14713:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 44207,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "14705:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_bytes32_$",
+ "typeString": "type(bytes32)"
+ },
+ "typeName": "bytes32"
+ },
+ "id": 44209,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "14705:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "src": "14683:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": {
+ "id": 44216,
+ "nodeType": "Block",
+ "src": "14765:40:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44214,
+ "name": "exchangeRegistryId",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43373,
+ "src": "14780:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "functionReturnParameters": 44205,
+ "id": 44215,
+ "nodeType": "Return",
+ "src": "14773:25:137"
+ }
+ ]
+ },
+ "id": 44217,
+ "nodeType": "IfStatement",
+ "src": "14679:126:137",
+ "trueBody": {
+ "id": 44213,
+ "nodeType": "Block",
+ "src": "14717:42:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44211,
+ "name": "EXCHANGE_REGISTRY_ID",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 8281,
+ "src": "14732:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "functionReturnParameters": 44205,
+ "id": 44212,
+ "nodeType": "Return",
+ "src": "14725:27:137"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "documentation": "@notice Returns the exchange id in the registry of the corresponding fiat pair exchange.\n@dev When this storage is uninitialized, it falls back to the default EXCHANGE_REGISTRY_ID.\nexchangeRegistryId was introduced after the initial release of cUSD's StableToken,\nso exchangeRegistryId will be uninitialized for that contract. If cUSD's StableToken\nexchangeRegistryId were to be correctly initialized, this function could be deprecated\nin favor of using exchangeRegistryId directly.\n@return Registry id for the corresponding exchange.",
+ "id": 44219,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getExchangeRegistryId",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44202,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "14640:2:137"
+ },
+ "returnParameters": {
+ "id": 44205,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44204,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44219,
+ "src": "14664:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ },
+ "typeName": {
+ "id": 44203,
+ "name": "bytes32",
+ "nodeType": "ElementaryTypeName",
+ "src": "14664:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bytes32",
+ "typeString": "bytes32"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "14663:9:137"
+ },
+ "scope": 44644,
+ "src": "14610:199:137",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 44247,
+ "nodeType": "Block",
+ "src": "15119:596:137",
+ "statements": [
+ {
+ "assignments": [
+ 44229
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44229,
+ "name": "updatedInflationFactor",
+ "nodeType": "VariableDeclaration",
+ "scope": 44247,
+ "src": "15125:50:137",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 44228,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "15125:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44230,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "15125:50:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44235,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 44231,
+ "name": "updatedInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44229,
+ "src": "15183:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ null
+ ],
+ "id": 44232,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "TupleExpression",
+ "src": "15182:26:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$__$",
+ "typeString": "tuple(struct FixidityLib.Fraction memory,)"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "id": 44233,
+ "name": "getUpdatedInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44383,
+ "src": "15211:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$",
+ "typeString": "function () view returns (struct FixidityLib.Fraction memory,uint256)"
+ }
+ },
+ "id": 44234,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15211:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$",
+ "typeString": "tuple(struct FixidityLib.Fraction memory,uint256)"
+ }
+ },
+ "src": "15182:56:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44236,
+ "nodeType": "ExpressionStatement",
+ "src": "15182:56:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44242,
+ "name": "updatedInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44229,
+ "src": "15675:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44239,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44221,
+ "src": "15661:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44237,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "15640:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 44238,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "newFixed",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3093,
+ "src": "15640:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 44240,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15640:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "id": 44241,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "divide",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3515,
+ "src": "15640:34:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_struct$_Fraction_$3011_memory_ptr_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,struct FixidityLib.Fraction memory) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 44243,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15640:58:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "id": 44244,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "fromFixed",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3106,
+ "src": "15640:68:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)"
+ }
+ },
+ "id": 44245,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "15640:70:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 44225,
+ "id": 44246,
+ "nodeType": "Return",
+ "src": "15633:77:137"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the value of a given number of units given the current inflation factor.\n@param units The units to convert to value.\n@return The value corresponding to `units` given the current inflation factor.",
+ "id": 44248,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "unitsToValue",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44222,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44221,
+ "name": "units",
+ "nodeType": "VariableDeclaration",
+ "scope": 44248,
+ "src": "15074:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44220,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "15074:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "15073:15:137"
+ },
+ "returnParameters": {
+ "id": 44225,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44224,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44248,
+ "src": "15110:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44223,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "15110:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "15109:9:137"
+ },
+ "scope": 44644,
+ "src": "15052:663:137",
+ "stateMutability": "view",
+ "superFunction": 45363,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 44267,
+ "nodeType": "Block",
+ "src": "16221:83:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44261,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44252,
+ "src": "16280:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44259,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "16259:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 44260,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "newFixed",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3093,
+ "src": "16259:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 44262,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16259:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44257,
+ "name": "inflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44250,
+ "src": "16234:15:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "id": 44258,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "multiply",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3447,
+ "src": "16234:24:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_struct$_Fraction_$3011_memory_ptr_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,struct FixidityLib.Fraction memory) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 44263,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16234:53:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "id": 44264,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "fromFixed",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3106,
+ "src": "16234:63:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)"
+ }
+ },
+ "id": 44265,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16234:65:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 44256,
+ "id": 44266,
+ "nodeType": "Return",
+ "src": "16227:72:137"
+ }
+ ]
+ },
+ "documentation": "@notice Returns the units for a given value given the current inflation factor.\n@param inflationFactor The current inflation factor.\n@param value The value to convert to units.\n@return The units corresponding to `value` given the current inflation factor.\n@dev We assume any function calling this will have updated the inflation factor.",
+ "id": 44268,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "_valueToUnits",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44253,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44250,
+ "name": "inflationFactor",
+ "nodeType": "VariableDeclaration",
+ "scope": 44268,
+ "src": "16116:43:137",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 44249,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "16116:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44252,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 44268,
+ "src": "16161:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44251,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "16161:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "16115:60:137"
+ },
+ "returnParameters": {
+ "id": 44256,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44255,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44268,
+ "src": "16210:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44254,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "16210:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "16209:9:137"
+ },
+ "scope": 44644,
+ "src": "16093:211:137",
+ "stateMutability": "pure",
+ "superFunction": null,
+ "visibility": "private"
+ },
+ {
+ "body": {
+ "id": 44382,
+ "nodeType": "Block",
+ "src": "16582:1310:137",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 44282,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 44275,
+ "name": "now",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47590,
+ "src": "16635:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "<",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44279,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "16678:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44280,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "updatePeriod",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43366,
+ "src": "16678:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44276,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "16641:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44277,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factorLastUpdated",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43368,
+ "src": "16641:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44278,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "16641:36:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44281,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16641:65:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "16635:71:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 44290,
+ "nodeType": "IfStatement",
+ "src": "16631:156:137",
+ "trueBody": {
+ "id": 44289,
+ "nodeType": "Block",
+ "src": "16708:79:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44283,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "16724:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44284,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "16724:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44285,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "16747:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44286,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factorLastUpdated",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43368,
+ "src": "16747:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 44287,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "16723:57:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_storage_$_t_uint256_$",
+ "typeString": "tuple(struct FixidityLib.Fraction storage ref,uint256)"
+ }
+ },
+ "functionReturnParameters": 44274,
+ "id": 44288,
+ "nodeType": "Return",
+ "src": "16716:64:137"
+ }
+ ]
+ }
+ },
+ {
+ "assignments": [
+ 44292
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44292,
+ "name": "numerator",
+ "nodeType": "VariableDeclaration",
+ "scope": 44382,
+ "src": "16793:17:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44291,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "16793:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44293,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "16793:17:137"
+ },
+ {
+ "assignments": [
+ 44295
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44295,
+ "name": "denominator",
+ "nodeType": "VariableDeclaration",
+ "scope": 44382,
+ "src": "16816:19:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44294,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "16816:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44296,
+ "initialValue": null,
+ "nodeType": "VariableDeclarationStatement",
+ "src": "16816:19:137"
+ },
+ {
+ "assignments": [
+ 44298
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44298,
+ "name": "timesToApplyInflation",
+ "nodeType": "VariableDeclaration",
+ "scope": 44382,
+ "src": "16914:29:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44297,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "16914:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44308,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44305,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "16999:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44306,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "updatePeriod",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43366,
+ "src": "16999:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44301,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "16954:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44302,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factorLastUpdated",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43368,
+ "src": "16954:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44299,
+ "name": "now",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47590,
+ "src": "16946:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44300,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46188,
+ "src": "16946:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44303,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16946:41:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44304,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "div",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46265,
+ "src": "16946:45:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44307,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "16946:86:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "16914:118:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44334,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 44309,
+ "name": "numerator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44292,
+ "src": "17040:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44310,
+ "name": "denominator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44295,
+ "src": "17051:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 44311,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "TupleExpression",
+ "src": "17039:24:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
+ "typeString": "tuple(uint256,uint256)"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44313,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "17088:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44314,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "17088:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "id": 44315,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unwrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3055,
+ "src": "17088:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)"
+ }
+ },
+ "id": 44316,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17088:30:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44317,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "17126:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 44318,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "fixed1",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3032,
+ "src": "17126:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function () pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 44319,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17126:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "id": 44320,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unwrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3055,
+ "src": "17126:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)"
+ }
+ },
+ "id": 44321,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17126:29:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44322,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "17163:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44323,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "rate",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43362,
+ "src": "17163:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ "id": 44324,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unwrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3055,
+ "src": "17163:26:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)"
+ }
+ },
+ "id": 44325,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17163:28:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [],
+ "expression": {
+ "argumentTypes": [],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44326,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "17199:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 44327,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "fixed1",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3032,
+ "src": "17199:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function () pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 44328,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17199:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "id": 44329,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "unwrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3055,
+ "src": "17199:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory) pure returns (uint256)"
+ }
+ },
+ "id": 44330,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17199:29:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44331,
+ "name": "timesToApplyInflation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44298,
+ "src": "17236:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44332,
+ "name": "decimals_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43348,
+ "src": "17265:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ {
+ "typeIdentifier": "t_uint8",
+ "typeString": "uint8"
+ }
+ ],
+ "id": 44312,
+ "name": "fractionMulExp",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 7713,
+ "src": "17066:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
+ "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) view returns (uint256,uint256)"
+ }
+ },
+ "id": 44333,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17066:214:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
+ "typeString": "tuple(uint256,uint256)"
+ }
+ },
+ "src": "17039:241:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44335,
+ "nodeType": "ExpressionStatement",
+ "src": "17039:241:137"
+ },
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "id": 44342,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 44338,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 44336,
+ "name": "numerator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44292,
+ "src": "17411:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 44337,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "17424:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "17411:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "||",
+ "rightExpression": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 44341,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 44339,
+ "name": "denominator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44295,
+ "src": "17429:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 44340,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "17444:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "src": "17429:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "src": "17411:34:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 44350,
+ "nodeType": "IfStatement",
+ "src": "17407:119:137",
+ "trueBody": {
+ "id": 44349,
+ "nodeType": "Block",
+ "src": "17447:79:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44343,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "17463:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44344,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "17463:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44345,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "17486:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44346,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factorLastUpdated",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43368,
+ "src": "17486:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 44347,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "17462:57:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_storage_$_t_uint256_$",
+ "typeString": "tuple(struct FixidityLib.Fraction storage ref,uint256)"
+ }
+ },
+ "functionReturnParameters": 44274,
+ "id": 44348,
+ "nodeType": "Return",
+ "src": "17455:64:137"
+ }
+ ]
+ }
+ },
+ {
+ "assignments": [
+ 44354
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44354,
+ "name": "currentInflationFactor",
+ "nodeType": "VariableDeclaration",
+ "scope": 44382,
+ "src": "17532:50:137",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 44353,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "17532:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44365,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44362,
+ "name": "denominator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44295,
+ "src": "17644:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44360,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "17627:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 44361,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "wrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3044,
+ "src": "17627:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 44363,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17627:29:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44357,
+ "name": "numerator",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44292,
+ "src": "17602:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44355,
+ "name": "FixidityLib",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3610,
+ "src": "17585:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_contract$_FixidityLib_$3610_$",
+ "typeString": "type(library FixidityLib)"
+ }
+ },
+ "id": 44356,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "wrap",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3044,
+ "src": "17585:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (uint256) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 44358,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17585:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "id": 44359,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "divide",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 3515,
+ "src": "17585:34:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_struct$_Fraction_$3011_memory_ptr_$returns$_t_struct$_Fraction_$3011_memory_ptr_$bound_to$_t_struct$_Fraction_$3011_memory_ptr_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,struct FixidityLib.Fraction memory) pure returns (struct FixidityLib.Fraction memory)"
+ }
+ },
+ "id": 44364,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17585:77:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "17532:130:137"
+ },
+ {
+ "assignments": [
+ 44367
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44367,
+ "name": "lastUpdated",
+ "nodeType": "VariableDeclaration",
+ "scope": 44382,
+ "src": "17668:19:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44366,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "17668:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44377,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44374,
+ "name": "timesToApplyInflation",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44298,
+ "src": "17766:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44371,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "17734:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44372,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "updatePeriod",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43366,
+ "src": "17734:27:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44373,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "mul",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46249,
+ "src": "17734:31:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44375,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17734:54:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44368,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "17690:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44369,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factorLastUpdated",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43368,
+ "src": "17690:32:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44370,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "17690:36:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44376,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "17690:104:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "17668:126:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "components": [
+ {
+ "argumentTypes": null,
+ "id": 44378,
+ "name": "currentInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44354,
+ "src": "17809:22:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction memory"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44379,
+ "name": "lastUpdated",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44367,
+ "src": "17833:11:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "id": 44380,
+ "isConstant": false,
+ "isInlineArray": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "TupleExpression",
+ "src": "17808:37:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$",
+ "typeString": "tuple(struct FixidityLib.Fraction memory,uint256)"
+ }
+ },
+ "functionReturnParameters": 44274,
+ "id": 44381,
+ "nodeType": "Return",
+ "src": "17801:44:137"
+ }
+ ]
+ },
+ "documentation": "@notice Computes the up-to-date inflation factor.\n@return Current inflation factor.\n@return Last time when the returned inflation factor was updated.",
+ "id": 44383,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "getUpdatedInflationFactor",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44269,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "16519:2:137"
+ },
+ "returnParameters": {
+ "id": 44274,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44271,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44383,
+ "src": "16544:27:137",
+ "stateVariable": false,
+ "storageLocation": "memory",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_memory_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ },
+ "typeName": {
+ "contractScope": null,
+ "id": 44270,
+ "name": "FixidityLib.Fraction",
+ "nodeType": "UserDefinedTypeName",
+ "referencedDeclaration": 3011,
+ "src": "16544:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage_ptr",
+ "typeString": "struct FixidityLib.Fraction"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44273,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44383,
+ "src": "16573:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44272,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "16573:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "16543:38:137"
+ },
+ "scope": 44644,
+ "src": "16485:1407:137",
+ "stateMutability": "view",
+ "superFunction": null,
+ "visibility": "private"
+ },
+ {
+ "body": {
+ "id": 44401,
+ "nodeType": "Block",
+ "src": "18238:38:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44397,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44385,
+ "src": "18261:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44398,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44387,
+ "src": "18265:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44396,
+ "name": "_transfer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44472,
+ "src": "18251:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
+ "typeString": "function (address,uint256) returns (bool)"
+ }
+ },
+ "id": 44399,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18251:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "functionReturnParameters": 44395,
+ "id": 44400,
+ "nodeType": "Return",
+ "src": "18244:27:137"
+ }
+ ]
+ },
+ "documentation": "@notice Transfers `value` from `msg.sender` to `to`\n@param to The address to transfer to.\n@param value The amount to be transferred.",
+ "id": 44402,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 44390,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 44389,
+ "name": "updateInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43419,
+ "src": "18173:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "18173:21:137"
+ },
+ {
+ "arguments": null,
+ "id": 44392,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 44391,
+ "name": "onlyWhenNotFrozen",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3631,
+ "src": "18199:17:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "18199:17:137"
+ }
+ ],
+ "name": "transfer",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44388,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44385,
+ "name": "to",
+ "nodeType": "VariableDeclaration",
+ "scope": 44402,
+ "src": "18131:10:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44384,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "18131:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44387,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 44402,
+ "src": "18143:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44386,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "18143:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "18130:27:137"
+ },
+ "returnParameters": {
+ "id": 44395,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44394,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44402,
+ "src": "18230:4:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 44393,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "18230:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "18229:6:137"
+ },
+ "scope": 44644,
+ "src": "18113:163:137",
+ "stateMutability": "nonpayable",
+ "superFunction": 46878,
+ "visibility": "public"
+ },
+ {
+ "body": {
+ "id": 44471,
+ "nodeType": "Block",
+ "src": "18543:399:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 44416,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 44412,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44404,
+ "src": "18557:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "!=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 44414,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "18571:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 44413,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "18563:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 44415,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18563:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "18557:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "7472616e7366657220617474656d7074656420746f207265736572766564206164647265737320307830",
+ "id": 44417,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "18575:44:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_d70e6696a6c0b4643ee1ebae9ec096136ed54277bf37d57ae5b5cfc09b48d8e8",
+ "typeString": "literal_string \"transfer attempted to reserved address 0x0\""
+ },
+ "value": "transfer attempted to reserved address 0x0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_d70e6696a6c0b4643ee1ebae9ec096136ed54277bf37d57ae5b5cfc09b48d8e8",
+ "typeString": "literal_string \"transfer attempted to reserved address 0x0\""
+ }
+ ],
+ "id": 44411,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "18549:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 44418,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18549:71:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44419,
+ "nodeType": "ExpressionStatement",
+ "src": "18549:71:137"
+ },
+ {
+ "assignments": [
+ 44421
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44421,
+ "name": "units",
+ "nodeType": "VariableDeclaration",
+ "scope": 44471,
+ "src": "18626:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44420,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "18626:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44427,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44423,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "18656:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44424,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "18656:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44425,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44406,
+ "src": "18679:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44422,
+ "name": "_valueToUnits",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44268,
+ "src": "18642:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44426,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18642:43:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "18626:59:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "id": 44434,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44429,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "18699:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44432,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44430,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "18708:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 44431,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "18708:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "18699:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": ">=",
+ "rightExpression": {
+ "argumentTypes": null,
+ "id": 44433,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44421,
+ "src": "18723:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "18699:29:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "hexValue": "7472616e736665722076616c75652065786365656465642062616c616e6365206f662073656e646572",
+ "id": 44435,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "string",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "18730:43:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_stringliteral_993a5b9c92acf262ea69aa9bd83d497a43d16d43273a37ad498a45ebc1a76158",
+ "typeString": "literal_string \"transfer value exceeded balance of sender\""
+ },
+ "value": "transfer value exceeded balance of sender"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ {
+ "typeIdentifier": "t_stringliteral_993a5b9c92acf262ea69aa9bd83d497a43d16d43273a37ad498a45ebc1a76158",
+ "typeString": "literal_string \"transfer value exceeded balance of sender\""
+ }
+ ],
+ "id": 44428,
+ "name": "require",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 47591,
+ 47592
+ ],
+ "referencedDeclaration": 47592,
+ "src": "18691:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
+ "typeString": "function (bool,string memory) pure"
+ }
+ },
+ "id": 44436,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18691:83:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44437,
+ "nodeType": "ExpressionStatement",
+ "src": "18691:83:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44449,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44438,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "18780:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44441,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44439,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "18789:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 44440,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "18789:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "18780:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44447,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44421,
+ "src": "18828:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44442,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "18803:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44445,
+ "indexExpression": {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44443,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "18812:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 44444,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "18812:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "18803:20:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44446,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46188,
+ "src": "18803:24:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44448,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18803:31:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "18780:54:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44450,
+ "nodeType": "ExpressionStatement",
+ "src": "18780:54:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44460,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44451,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "18840:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44453,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44452,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44404,
+ "src": "18849:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "18840:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44458,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44421,
+ "src": "18872:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44454,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "18855:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44456,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44455,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44404,
+ "src": "18864:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "18855:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44457,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "18855:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44459,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18855:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "18840:38:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44461,
+ "nodeType": "ExpressionStatement",
+ "src": "18840:38:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44463,
+ "name": "msg",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 47588,
+ "src": "18898:3:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_magic_message",
+ "typeString": "msg"
+ }
+ },
+ "id": 44464,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sender",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": null,
+ "src": "18898:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44465,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44404,
+ "src": "18910:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44466,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44406,
+ "src": "18914:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44462,
+ "name": "Transfer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 43330
+ ],
+ "referencedDeclaration": 43330,
+ "src": "18889:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,address,uint256)"
+ }
+ },
+ "id": 44467,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "18889:31:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44468,
+ "nodeType": "EmitStatement",
+ "src": "18884:36:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "74727565",
+ "id": 44469,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "bool",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "18933:4:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "value": "true"
+ },
+ "functionReturnParameters": 44410,
+ "id": 44470,
+ "nodeType": "Return",
+ "src": "18926:11:137"
+ }
+ ]
+ },
+ "documentation": "@notice Transfers StableToken from one address to another\n@param to The address to transfer StableToken to.\n@param value The amount of StableToken to be transferred.",
+ "id": 44472,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "_transfer",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44407,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44404,
+ "name": "to",
+ "nodeType": "VariableDeclaration",
+ "scope": 44472,
+ "src": "18492:10:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44403,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "18492:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44406,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 44472,
+ "src": "18504:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44405,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "18504:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "18491:27:137"
+ },
+ "returnParameters": {
+ "id": 44410,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44409,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44472,
+ "src": "18537:4:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ },
+ "typeName": {
+ "id": 44408,
+ "name": "bool",
+ "nodeType": "ElementaryTypeName",
+ "src": "18537:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "18536:6:137"
+ },
+ "scope": 44644,
+ "src": "18473:469:137",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "internal"
+ },
+ {
+ "body": {
+ "id": 44511,
+ "nodeType": "Block",
+ "src": "19632:162:137",
+ "statements": [
+ {
+ "assignments": [
+ 44486
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44486,
+ "name": "units",
+ "nodeType": "VariableDeclaration",
+ "scope": 44511,
+ "src": "19638:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44485,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "19638:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44492,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44488,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "19668:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44489,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "19668:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44490,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44476,
+ "src": "19691:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44487,
+ "name": "_valueToUnits",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44268,
+ "src": "19654:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44491,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19654:43:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "19638:59:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44502,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44493,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "19703:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44495,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44494,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44474,
+ "src": "19712:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "19703:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44500,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44486,
+ "src": "19739:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44496,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "19720:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44498,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44497,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44474,
+ "src": "19729:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "19720:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44499,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46188,
+ "src": "19720:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44501,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19720:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "19703:42:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44503,
+ "nodeType": "ExpressionStatement",
+ "src": "19703:42:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44509,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 44504,
+ "name": "totalSupply_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43354,
+ "src": "19751:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44507,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44486,
+ "src": "19783:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44505,
+ "name": "totalSupply_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43354,
+ "src": "19766:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44506,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "sub",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46188,
+ "src": "19766:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44508,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "19766:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "19751:38:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44510,
+ "nodeType": "ExpressionStatement",
+ "src": "19751:38:137"
+ }
+ ]
+ },
+ "documentation": "@notice Reserve balance for making payments for gas in this StableToken currency.\n@param from The account to reserve balance from\n@param value The amount of balance to reserve\n@dev Note that this function is called by the protocol when paying for tx fees in this\ncurrency. After the tx is executed, gas is refunded to the sender and credited to the\nvarious tx fee recipients via a call to `creditGasFees`. Note too that the events emitted\nby `creditGasFees` reflect the *net* gas fee payments for the transaction.",
+ "id": 44512,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 44479,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 44478,
+ "name": "onlyVm",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2799,
+ "src": "19575:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "19575:6:137"
+ },
+ {
+ "arguments": null,
+ "id": 44481,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 44480,
+ "name": "onlyWhenNotFrozen",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3631,
+ "src": "19586:17:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "19586:17:137"
+ },
+ {
+ "arguments": null,
+ "id": 44483,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 44482,
+ "name": "updateInflationFactor",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43419,
+ "src": "19608:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "19608:21:137"
+ }
+ ],
+ "name": "debitGasFees",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44477,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44474,
+ "name": "from",
+ "nodeType": "VariableDeclaration",
+ "scope": 44512,
+ "src": "19529:12:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44473,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "19529:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44476,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 44512,
+ "src": "19543:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44475,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "19543:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "19528:29:137"
+ },
+ "returnParameters": {
+ "id": 44484,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "19632:0:137"
+ },
+ "scope": 44644,
+ "src": "19507:287:137",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44594,
+ "nodeType": "Block",
+ "src": "20794:370:137",
+ "statements": [
+ {
+ "assignments": [
+ 44536
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44536,
+ "name": "units",
+ "nodeType": "VariableDeclaration",
+ "scope": 44594,
+ "src": "20800:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44535,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "20800:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44542,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44538,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "20830:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44539,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "20830:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44540,
+ "name": "refund",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44522,
+ "src": "20853:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44537,
+ "name": "_valueToUnits",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44268,
+ "src": "20816:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44541,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20816:44:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "20800:60:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44552,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44543,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "20866:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44545,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44544,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44514,
+ "src": "20875:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "20866:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44550,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44536,
+ "src": "20902:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44546,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "20883:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44548,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44547,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44514,
+ "src": "20892:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "20883:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44549,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "20883:18:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44551,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20883:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "20866:42:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44553,
+ "nodeType": "ExpressionStatement",
+ "src": "20866:42:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44563,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 44554,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44536,
+ "src": "20915:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44558,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44514,
+ "src": "20944:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44559,
+ "name": "communityFund",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44520,
+ "src": "20950:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44560,
+ "name": "baseTxFee",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44528,
+ "src": "20965:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44557,
+ "name": "_creditGas",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44643,
+ "src": "20933:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (address,address,uint256) returns (uint256)"
+ }
+ },
+ "id": 44561,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20933:42:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44555,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44536,
+ "src": "20923:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44556,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "20923:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44562,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20923:53:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "20915:61:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44564,
+ "nodeType": "ExpressionStatement",
+ "src": "20915:61:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44574,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 44565,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44536,
+ "src": "20982:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44569,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44514,
+ "src": "21011:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44570,
+ "name": "feeRecipient",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44516,
+ "src": "21017:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44571,
+ "name": "tipTxFee",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44524,
+ "src": "21031:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44568,
+ "name": "_creditGas",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44643,
+ "src": "21000:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (address,address,uint256) returns (uint256)"
+ }
+ },
+ "id": 44572,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21000:40:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44566,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44536,
+ "src": "20990:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44567,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "20990:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44573,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "20990:51:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "20982:59:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44575,
+ "nodeType": "ExpressionStatement",
+ "src": "20982:59:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44585,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 44576,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44536,
+ "src": "21047:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44580,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44514,
+ "src": "21076:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44581,
+ "name": "gatewayFeeRecipient",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44518,
+ "src": "21082:19:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44582,
+ "name": "gatewayFee",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44526,
+ "src": "21103:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44579,
+ "name": "_creditGas",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44643,
+ "src": "21065:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (address,address,uint256) returns (uint256)"
+ }
+ },
+ "id": 44583,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21065:49:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44577,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44536,
+ "src": "21055:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44578,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "21055:9:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44584,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21055:60:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "21047:68:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44586,
+ "nodeType": "ExpressionStatement",
+ "src": "21047:68:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44592,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "id": 44587,
+ "name": "totalSupply_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43354,
+ "src": "21121:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44590,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44536,
+ "src": "21153:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "id": 44588,
+ "name": "totalSupply_",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43354,
+ "src": "21136:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44589,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "21136:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44591,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21136:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "21121:38:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44593,
+ "nodeType": "ExpressionStatement",
+ "src": "21121:38:137"
+ }
+ ]
+ },
+ "documentation": "@notice Alternative function to credit balance after making payments\nfor gas in this StableToken currency.\n@param from The account to debit balance from\n@param feeRecipient Coinbase address\n@param gatewayFeeRecipient Gateway address\n@param communityFund Community fund address\n@param tipTxFee Coinbase fee\n@param baseTxFee Community fund fee\n@param gatewayFee Gateway fee\n@dev Note that this function is called by the protocol when paying for tx fees in this\ncurrency. Before the tx is executed, gas is debited from the sender via a call to\n`debitGasFees`. Note too that the events emitted by `creditGasFees` reflect the *net* gas fee\npayments for the transaction.",
+ "id": 44595,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [
+ {
+ "arguments": null,
+ "id": 44531,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 44530,
+ "name": "onlyVm",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 2799,
+ "src": "20769:6:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "20769:6:137"
+ },
+ {
+ "arguments": null,
+ "id": 44533,
+ "modifierName": {
+ "argumentTypes": null,
+ "id": 44532,
+ "name": "onlyWhenNotFrozen",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 3631,
+ "src": "20776:17:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_modifier$__$",
+ "typeString": "modifier ()"
+ }
+ },
+ "nodeType": "ModifierInvocation",
+ "src": "20776:17:137"
+ }
+ ],
+ "name": "creditGasFees",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44529,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44514,
+ "name": "from",
+ "nodeType": "VariableDeclaration",
+ "scope": 44595,
+ "src": "20568:12:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44513,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "20568:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44516,
+ "name": "feeRecipient",
+ "nodeType": "VariableDeclaration",
+ "scope": 44595,
+ "src": "20586:20:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44515,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "20586:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44518,
+ "name": "gatewayFeeRecipient",
+ "nodeType": "VariableDeclaration",
+ "scope": 44595,
+ "src": "20612:27:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44517,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "20612:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44520,
+ "name": "communityFund",
+ "nodeType": "VariableDeclaration",
+ "scope": 44595,
+ "src": "20645:21:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44519,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "20645:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44522,
+ "name": "refund",
+ "nodeType": "VariableDeclaration",
+ "scope": 44595,
+ "src": "20672:14:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44521,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "20672:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44524,
+ "name": "tipTxFee",
+ "nodeType": "VariableDeclaration",
+ "scope": 44595,
+ "src": "20692:16:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44523,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "20692:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44526,
+ "name": "gatewayFee",
+ "nodeType": "VariableDeclaration",
+ "scope": 44595,
+ "src": "20714:18:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44525,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "20714:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44528,
+ "name": "baseTxFee",
+ "nodeType": "VariableDeclaration",
+ "scope": 44595,
+ "src": "20738:17:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44527,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "20738:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "20562:197:137"
+ },
+ "returnParameters": {
+ "id": 44534,
+ "nodeType": "ParameterList",
+ "parameters": [],
+ "src": "20794:0:137"
+ },
+ "scope": 44644,
+ "src": "20540:624:137",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "external"
+ },
+ {
+ "body": {
+ "id": 44642,
+ "nodeType": "Block",
+ "src": "21256:218:137",
+ "statements": [
+ {
+ "condition": {
+ "argumentTypes": null,
+ "commonType": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "id": 44610,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftExpression": {
+ "argumentTypes": null,
+ "id": 44606,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44599,
+ "src": "21266:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "nodeType": "BinaryOperation",
+ "operator": "==",
+ "rightExpression": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 44608,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "21280:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ }
+ ],
+ "id": 44607,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "lValueRequested": false,
+ "nodeType": "ElementaryTypeNameExpression",
+ "src": "21272:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_type$_t_address_$",
+ "typeString": "type(address)"
+ },
+ "typeName": "address"
+ },
+ "id": 44609,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "typeConversion",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21272:10:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address_payable",
+ "typeString": "address payable"
+ }
+ },
+ "src": "21266:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_bool",
+ "typeString": "bool"
+ }
+ },
+ "falseBody": null,
+ "id": 44614,
+ "nodeType": "IfStatement",
+ "src": "21262:45:137",
+ "trueBody": {
+ "id": 44613,
+ "nodeType": "Block",
+ "src": "21284:23:137",
+ "statements": [
+ {
+ "expression": {
+ "argumentTypes": null,
+ "hexValue": "30",
+ "id": 44611,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": true,
+ "kind": "number",
+ "lValueRequested": false,
+ "nodeType": "Literal",
+ "src": "21299:1:137",
+ "subdenomination": null,
+ "typeDescriptions": {
+ "typeIdentifier": "t_rational_0_by_1",
+ "typeString": "int_const 0"
+ },
+ "value": "0"
+ },
+ "functionReturnParameters": 44605,
+ "id": 44612,
+ "nodeType": "Return",
+ "src": "21292:8:137"
+ }
+ ]
+ }
+ },
+ {
+ "assignments": [
+ 44616
+ ],
+ "declarations": [
+ {
+ "constant": false,
+ "id": 44616,
+ "name": "units",
+ "nodeType": "VariableDeclaration",
+ "scope": 44642,
+ "src": "21312:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44615,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "21312:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "id": 44622,
+ "initialValue": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "expression": {
+ "argumentTypes": null,
+ "id": 44618,
+ "name": "inflationState",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43371,
+ "src": "21342:14:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_InflationState_$43369_storage",
+ "typeString": "struct StableToken.InflationState storage ref"
+ }
+ },
+ "id": 44619,
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "factor",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 43364,
+ "src": "21342:21:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44620,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44601,
+ "src": "21365:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_struct$_Fraction_$3011_storage",
+ "typeString": "struct FixidityLib.Fraction storage ref"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44617,
+ "name": "_valueToUnits",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44268,
+ "src": "21328:13:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_struct$_Fraction_$3011_memory_ptr_$_t_uint256_$returns$_t_uint256_$",
+ "typeString": "function (struct FixidityLib.Fraction memory,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44621,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21328:43:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "VariableDeclarationStatement",
+ "src": "21312:59:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44632,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "leftHandSide": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44623,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "21377:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44625,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44624,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44599,
+ "src": "21386:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": true,
+ "nodeType": "IndexAccess",
+ "src": "21377:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "nodeType": "Assignment",
+ "operator": "=",
+ "rightHandSide": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44630,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44616,
+ "src": "21409:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "expression": {
+ "argumentTypes": null,
+ "baseExpression": {
+ "argumentTypes": null,
+ "id": 44626,
+ "name": "balances",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 43352,
+ "src": "21392:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
+ "typeString": "mapping(address => uint256)"
+ }
+ },
+ "id": 44628,
+ "indexExpression": {
+ "argumentTypes": null,
+ "id": 44627,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44599,
+ "src": "21401:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "isConstant": false,
+ "isLValue": true,
+ "isPure": false,
+ "lValueRequested": false,
+ "nodeType": "IndexAccess",
+ "src": "21392:12:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44629,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "lValueRequested": false,
+ "memberName": "add",
+ "nodeType": "MemberAccess",
+ "referencedDeclaration": 46172,
+ "src": "21392:16:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
+ "typeString": "function (uint256,uint256) pure returns (uint256)"
+ }
+ },
+ "id": 44631,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21392:23:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "src": "21377:38:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "id": 44633,
+ "nodeType": "ExpressionStatement",
+ "src": "21377:38:137"
+ },
+ {
+ "eventCall": {
+ "argumentTypes": null,
+ "arguments": [
+ {
+ "argumentTypes": null,
+ "id": 44635,
+ "name": "from",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44597,
+ "src": "21435:4:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44636,
+ "name": "to",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44599,
+ "src": "21441:2:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ {
+ "argumentTypes": null,
+ "id": 44637,
+ "name": "value",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44601,
+ "src": "21445:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ }
+ ],
+ "expression": {
+ "argumentTypes": [
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ ],
+ "id": 44634,
+ "name": "Transfer",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [
+ 43330
+ ],
+ "referencedDeclaration": 43330,
+ "src": "21426:8:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
+ "typeString": "function (address,address,uint256)"
+ }
+ },
+ "id": 44638,
+ "isConstant": false,
+ "isLValue": false,
+ "isPure": false,
+ "kind": "functionCall",
+ "lValueRequested": false,
+ "names": [],
+ "nodeType": "FunctionCall",
+ "src": "21426:25:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_tuple$__$",
+ "typeString": "tuple()"
+ }
+ },
+ "id": 44639,
+ "nodeType": "EmitStatement",
+ "src": "21421:30:137"
+ },
+ {
+ "expression": {
+ "argumentTypes": null,
+ "id": 44640,
+ "name": "units",
+ "nodeType": "Identifier",
+ "overloadedDeclarations": [],
+ "referencedDeclaration": 44616,
+ "src": "21464:5:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "functionReturnParameters": 44605,
+ "id": 44641,
+ "nodeType": "Return",
+ "src": "21457:12:137"
+ }
+ ]
+ },
+ "documentation": null,
+ "id": 44643,
+ "implemented": true,
+ "kind": "function",
+ "modifiers": [],
+ "name": "_creditGas",
+ "nodeType": "FunctionDefinition",
+ "parameters": {
+ "id": 44602,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44597,
+ "name": "from",
+ "nodeType": "VariableDeclaration",
+ "scope": 44643,
+ "src": "21188:12:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44596,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "21188:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44599,
+ "name": "to",
+ "nodeType": "VariableDeclaration",
+ "scope": 44643,
+ "src": "21202:10:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ },
+ "typeName": {
+ "id": 44598,
+ "name": "address",
+ "nodeType": "ElementaryTypeName",
+ "src": "21202:7:137",
+ "stateMutability": "nonpayable",
+ "typeDescriptions": {
+ "typeIdentifier": "t_address",
+ "typeString": "address"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ },
+ {
+ "constant": false,
+ "id": 44601,
+ "name": "value",
+ "nodeType": "VariableDeclaration",
+ "scope": 44643,
+ "src": "21214:13:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44600,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "21214:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "21187:41:137"
+ },
+ "returnParameters": {
+ "id": 44605,
+ "nodeType": "ParameterList",
+ "parameters": [
+ {
+ "constant": false,
+ "id": 44604,
+ "name": "",
+ "nodeType": "VariableDeclaration",
+ "scope": 44643,
+ "src": "21247:7:137",
+ "stateVariable": false,
+ "storageLocation": "default",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ },
+ "typeName": {
+ "id": 44603,
+ "name": "uint256",
+ "nodeType": "ElementaryTypeName",
+ "src": "21247:7:137",
+ "typeDescriptions": {
+ "typeIdentifier": "t_uint256",
+ "typeString": "uint256"
+ }
+ },
+ "value": null,
+ "visibility": "internal"
+ }
+ ],
+ "src": "21246:9:137"
+ },
+ "scope": 44644,
+ "src": "21168:306:137",
+ "stateMutability": "nonpayable",
+ "superFunction": null,
+ "visibility": "internal"
+ }
+ ],
+ "scope": 44645,
+ "src": "695:20782:137"
+ }
+ ],
+ "src": "0:21478:137"
+ },
+ "compiler": {
+ "name": "solc",
+ "version": "0.5.13+commit.5b0b510c.Emscripten.clang"
+ },
+ "networks": {
+ "1101": {
+ "events": {
+ "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Approval",
+ "type": "event"
+ },
+ "0x08f3ed03ec9e579d1f6ab2f9e0d3dc661704696deabe37a6b6df7014f1b30a97": {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "factor",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "lastUpdated",
+ "type": "uint256"
+ }
+ ],
+ "name": "InflationFactorUpdated",
+ "type": "event"
+ },
+ "0xa0035d6667ffb7d387c86c7228141c4a877e8ed831b267ac928a2f5b651c155d": {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "rate",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "updatePeriod",
+ "type": "uint256"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "lastUpdated",
+ "type": "uint256"
+ }
+ ],
+ "name": "InflationParametersUpdated",
+ "type": "event"
+ },
+ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "previousOwner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "newOwner",
+ "type": "address"
+ }
+ ],
+ "name": "OwnershipTransferred",
+ "type": "event"
+ },
+ "0x27fe5f0c1c3b1ed427cc63d0f05759ffdecf9aec9e18d31ef366fc8a6cb5dc3b": {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "registryAddress",
+ "type": "address"
+ }
+ ],
+ "name": "RegistrySet",
+ "type": "event"
+ },
+ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Transfer",
+ "type": "event"
+ },
+ "0xe5d4e30fb8364e57bc4d662a07d0cf36f4c34552004c4c3624620a2c1d1c03dc": {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": false,
+ "internalType": "string",
+ "name": "comment",
+ "type": "string"
+ }
+ ],
+ "name": "TransferComment",
+ "type": "event"
+ }
+ },
+ "links": {},
+ "address": "0xb125995F5a4766C451cD8C34C4F5CAC89b724571",
+ "transactionHash": "0x4c63df2a02900cd5517b256fb6219bdfe96ccf8aeb08665411596429a082bd7e"
+ }
+ },
+ "schemaVersion": "3.0.23",
+ "updatedAt": "2022-10-07T12:39:12.457Z",
+ "networkType": "ethereum",
+ "devdoc": {
+ "methods": {
+ "allowance(address,address)": {
+ "params": {
+ "accountOwner": "The owner of the StableToken.",
+ "spender": "The spender of the StableToken."
+ },
+ "return": "The amount of StableToken owner is allowing spender to spend."
+ },
+ "approve(address,uint256)": {
+ "params": {
+ "spender": "The address which is being approved to spend StableToken.",
+ "value": "The amount of StableToken approved to the spender."
+ },
+ "return": "True if the transaction succeeds."
+ },
+ "balanceOf(address)": {
+ "params": {
+ "accountOwner": "The address to query the balance of."
+ },
+ "return": "The balance of the specified address."
+ },
+ "burn(uint256)": {
+ "params": {
+ "value": "The amount of StableToken to burn."
+ }
+ },
+ "checkProofOfPossession(address,bytes,bytes)": {
+ "params": {
+ "blsKey": "The BLS public key that the validator is using for consensus, should pass proof of possession. 48 bytes.",
+ "blsPop": "The BLS public key proof-of-possession, which consists of a signature on the account address. 96 bytes.",
+ "sender": "The address signed by the BLS key to generate the proof of possession."
+ },
+ "return": "True upon success."
+ },
+ "constructor": {
+ "params": {
+ "test": "Set to true to skip implementation initialization"
+ }
+ },
+ "creditGasFees(address,address,address,address,uint256,uint256,uint256,uint256)": {
+ "details": "Note that this function is called by the protocol when paying for tx fees in this currency. Before the tx is executed, gas is debited from the sender via a call to `debitGasFees`. Note too that the events emitted by `creditGasFees` reflect the *net* gas fee payments for the transaction.",
+ "params": {
+ "baseTxFee": "Community fund fee",
+ "communityFund": "Community fund address",
+ "feeRecipient": "Coinbase address",
+ "from": "The account to debit balance from",
+ "gatewayFee": "Gateway fee",
+ "gatewayFeeRecipient": "Gateway address",
+ "tipTxFee": "Coinbase fee"
+ }
+ },
+ "debitGasFees(address,uint256)": {
+ "details": "Note that this function is called by the protocol when paying for tx fees in this currency. After the tx is executed, gas is refunded to the sender and credited to the various tx fee recipients via a call to `creditGasFees`. Note too that the events emitted by `creditGasFees` reflect the *net* gas fee payments for the transaction.",
+ "params": {
+ "from": "The account to reserve balance from",
+ "value": "The amount of balance to reserve"
+ }
+ },
+ "decimals()": {
+ "return": "The number of decimal places to which StableToken is divisible."
+ },
+ "decreaseAllowance(address,uint256)": {
+ "params": {
+ "spender": "The address which is being approved to spend StableToken.",
+ "value": "The decrement of the amount of StableToken approved to the spender."
+ },
+ "return": "True if the transaction succeeds."
+ },
+ "fractionMulExp(uint256,uint256,uint256,uint256,uint256,uint256)": {
+ "params": {
+ "_decimals": "precision",
+ "aDenominator": "Denominator of first fraction",
+ "aNumerator": "Numerator of first fraction",
+ "bDenominator": "Denominator of exponentiated fraction",
+ "bNumerator": "Numerator of exponentiated fraction",
+ "exponent": "exponent to raise b to"
+ },
+ "return": "Numerator of the computed quantity (not reduced).Denominator of the computed quantity (not reduced)."
+ },
+ "getBlockNumberFromHeader(bytes)": {
+ "params": {
+ "header": "RLP encoded header"
+ },
+ "return": "Block number."
+ },
+ "getEpochNumber()": {
+ "return": "Current epoch number."
+ },
+ "getEpochNumberOfBlock(uint256)": {
+ "params": {
+ "blockNumber": "Block number where epoch number is calculated."
+ },
+ "return": "Epoch number."
+ },
+ "getEpochSize()": {
+ "return": "The current epoch size in blocks."
+ },
+ "getExchangeRegistryId()": {
+ "details": "When this storage is uninitialized, it falls back to the default EXCHANGE_REGISTRY_ID. exchangeRegistryId was introduced after the initial release of cUSD's StableToken, so exchangeRegistryId will be uninitialized for that contract. If cUSD's StableToken exchangeRegistryId were to be correctly initialized, this function could be deprecated in favor of using exchangeRegistryId directly.",
+ "return": "Registry id for the corresponding exchange."
+ },
+ "getInflationParameters()": {
+ "return": "ratefactorupdatePeriodfactorLastUpdated"
+ },
+ "getParentSealBitmap(uint256)": {
+ "params": {
+ "blockNumber": "Block number to retrieve. Must be within 4 epochs of the current number."
+ },
+ "return": "Bitmap parent seal with set bits at indices corresponding to signing validators."
+ },
+ "getVerifiedSealBitmapFromHeader(bytes)": {
+ "params": {
+ "header": "RLP encoded header"
+ },
+ "return": "Bitmap parent seal with set bits at indices correspoinding to signing validators."
+ },
+ "getVersionNumber()": {
+ "return": "Storage version of the contract.Major version of the contract.Minor version of the contract.Patch version of the contract."
+ },
+ "hashHeader(bytes)": {
+ "params": {
+ "header": "RLP encoded header"
+ },
+ "return": "Header hash."
+ },
+ "increaseAllowance(address,uint256)": {
+ "params": {
+ "spender": "The address which is being approved to spend StableToken.",
+ "value": "The increment of the amount of StableToken approved to the spender."
+ },
+ "return": "True if the transaction succeeds."
+ },
+ "initialize(string,string,uint8,address,uint256,uint256,address[],uint256[],string)": {
+ "params": {
+ "_decimals": "Tokens are divisible to this many decimal places.",
+ "_name": "The name of the stable token (English)",
+ "_symbol": "A short symbol identifying the token (e.g. \"cUSD\")",
+ "exchangeIdentifier": "String identifier of exchange in registry (for specific fiat pairs)",
+ "inflationFactorUpdatePeriod": "How often the inflation factor is updated, in seconds.",
+ "inflationRate": "Weekly inflation rate.",
+ "initialBalanceAddresses": "Array of addresses with an initial balance.",
+ "initialBalanceValues": "Array of balance values corresponding to initialBalanceAddresses.",
+ "registryAddress": "Address of the Registry contract."
+ }
+ },
+ "isOwner()": {
+ "details": "Returns true if the caller is the current owner."
+ },
+ "minQuorumSize(uint256)": {
+ "details": "Computed in celo-blockchain as int(math.Ceil(float64(2*valSet.Size()) / 3))"
+ },
+ "minQuorumSizeInCurrentSet()": {
+ "return": "Byzantine quorum of validators."
+ },
+ "mint(address,uint256)": {
+ "params": {
+ "to": "The account for which to mint tokens.",
+ "value": "The amount of StableToken to mint."
+ }
+ },
+ "name()": {
+ "return": "The name of the stable token."
+ },
+ "numberValidatorsInCurrentSet()": {
+ "return": "Size of the current elected validator set."
+ },
+ "numberValidatorsInSet(uint256)": {
+ "params": {
+ "blockNumber": "Block number to retrieve the validator set from."
+ },
+ "return": "Size of the validator set."
+ },
+ "owner()": {
+ "details": "Returns the address of the current owner."
+ },
+ "renounceOwnership()": {
+ "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
+ },
+ "setInflationParameters(uint256,uint256)": {
+ "params": {
+ "rate": "New rate.",
+ "updatePeriod": "How often inflationFactor is updated."
+ }
+ },
+ "setRegistry(address)": {
+ "params": {
+ "registryAddress": "The address of a registry contract for routing to other contracts."
+ }
+ },
+ "symbol()": {
+ "return": "The symbol of the stable token."
+ },
+ "totalSupply()": {
+ "details": "Though totalSupply_ is stored in units, this returns value.",
+ "return": "The total value of StableToken in existence"
+ },
+ "transfer(address,uint256)": {
+ "params": {
+ "to": "The address to transfer to.",
+ "value": "The amount to be transferred."
+ }
+ },
+ "transferFrom(address,address,uint256)": {
+ "params": {
+ "from": "The address to transfer StableToken from.",
+ "to": "The address to transfer StableToken to.",
+ "value": "The amount of StableToken to transfer."
+ },
+ "return": "True if the transaction succeeds."
+ },
+ "transferOwnership(address)": {
+ "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
+ },
+ "transferWithComment(address,uint256,string)": {
+ "params": {
+ "comment": "The transfer comment.",
+ "to": "The address to transfer to.",
+ "value": "The amount to be transferred."
+ },
+ "return": "True if the transaction succeeds."
+ },
+ "unitsToValue(uint256)": {
+ "params": {
+ "units": "The units to convert to value."
+ },
+ "return": "The value corresponding to `units` given the current inflation factor."
+ },
+ "validatorSignerAddressFromCurrentSet(uint256)": {
+ "params": {
+ "index": "Index of requested validator in the validator set."
+ },
+ "return": "Address of validator at the requested index."
+ },
+ "validatorSignerAddressFromSet(uint256,uint256)": {
+ "params": {
+ "blockNumber": "Block number to retrieve the validator set from.",
+ "index": "Index of requested validator in the validator set."
+ },
+ "return": "Address of validator at the requested index."
+ },
+ "valueToUnits(uint256)": {
+ "details": "We don't compute the updated inflationFactor here because we assume any function calling this will have updated the inflation factor.",
+ "params": {
+ "value": "The value to convert to units."
+ },
+ "return": "The units corresponding to `value` given the current inflation factor."
+ }
+ },
+ "title": "An ERC20 compliant token with adjustable supply."
+ },
+ "userdoc": {
+ "methods": {
+ "allowance(address,address)": {
+ "notice": "Gets the amount of owner's StableToken allowed to be spent by spender."
+ },
+ "approve(address,uint256)": {
+ "notice": "Approve a user to transfer StableToken on behalf of another user."
+ },
+ "balanceOf(address)": {
+ "notice": "Gets the balance of the specified address using the presently stored inflation factor."
+ },
+ "burn(uint256)": {
+ "notice": "Burns StableToken from the balance of msg.sender."
+ },
+ "checkProofOfPossession(address,bytes,bytes)": {
+ "notice": "Checks a BLS proof of possession."
+ },
+ "constructor": "Sets initialized == true on implementation contracts",
+ "creditGasFees(address,address,address,address,uint256,uint256,uint256,uint256)": {
+ "notice": "Alternative function to credit balance after making payments for gas in this StableToken currency."
+ },
+ "debitGasFees(address,uint256)": {
+ "notice": "Reserve balance for making payments for gas in this StableToken currency."
+ },
+ "decreaseAllowance(address,uint256)": {
+ "notice": "Decrease the allowance of another user."
+ },
+ "fractionMulExp(uint256,uint256,uint256,uint256,uint256,uint256)": {
+ "notice": "calculate a * b^x for fractions a, b to `decimals` precision"
+ },
+ "getBlockNumberFromHeader(bytes)": {
+ "notice": "Parses block number out of header."
+ },
+ "getEpochNumber()": {
+ "notice": "Returns the epoch number at a block."
+ },
+ "getEpochNumberOfBlock(uint256)": {
+ "notice": "Returns the epoch number at a block."
+ },
+ "getEpochSize()": {
+ "notice": "Returns the current epoch size in blocks."
+ },
+ "getExchangeRegistryId()": {
+ "notice": "Returns the exchange id in the registry of the corresponding fiat pair exchange."
+ },
+ "getInflationParameters()": {
+ "notice": "gets inflation parameters."
+ },
+ "getParentSealBitmap(uint256)": {
+ "notice": "Gets the parent seal bitmap from the header at the given block number."
+ },
+ "getVerifiedSealBitmapFromHeader(bytes)": {
+ "notice": "Verifies the BLS signature on the header and returns the seal bitmap. The validator set used for verification is retrieved based on the parent hash field of the header. If the parent hash is not in the blockchain, verification fails."
+ },
+ "getVersionNumber()": {
+ "notice": "Returns the storage, major, minor, and patch version of the contract."
+ },
+ "hashHeader(bytes)": {
+ "notice": "Computes hash of header."
+ },
+ "increaseAllowance(address,uint256)": {
+ "notice": "Increase the allowance of another user."
+ },
+ "minQuorumSize(uint256)": {
+ "notice": "Returns the minimum number of required signers for a given block number."
+ },
+ "minQuorumSizeInCurrentSet()": {
+ "notice": "Computes byzantine quorum from current validator set size"
+ },
+ "mint(address,uint256)": {
+ "notice": "Mints new StableToken and gives it to 'to'."
+ },
+ "numberValidatorsInCurrentSet()": {
+ "notice": "Gets the size of the current elected validator set."
+ },
+ "numberValidatorsInSet(uint256)": {
+ "notice": "Gets the size of the validator set that must sign the given block number."
+ },
+ "setInflationParameters(uint256,uint256)": {
+ "notice": "Updates Inflation Parameters."
+ },
+ "setRegistry(address)": {
+ "notice": "Updates the address pointing to a Registry contract."
+ },
+ "transfer(address,uint256)": {
+ "notice": "Transfers `value` from `msg.sender` to `to`"
+ },
+ "transferFrom(address,address,uint256)": {
+ "notice": "Transfers StableToken from one address to another on behalf of a user."
+ },
+ "transferWithComment(address,uint256,string)": {
+ "notice": "Transfer token for a specified address"
+ },
+ "unitsToValue(uint256)": {
+ "notice": "Returns the value of a given number of units given the current inflation factor."
+ },
+ "validatorSignerAddressFromCurrentSet(uint256)": {
+ "notice": "Gets a validator address from the current validator set."
+ },
+ "validatorSignerAddressFromSet(uint256,uint256)": {
+ "notice": "Gets a validator address from the validator set at the given block number."
+ },
+ "valueToUnits(uint256)": {
+ "notice": "Returns the units for a given value given the current inflation factor."
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/devtip/packages/react-app/components/Navbar/Navbar.module.scss b/devtip/packages/react-app/components/Navbar/Navbar.module.scss
new file mode 100644
index 00000000..16b7e18a
--- /dev/null
+++ b/devtip/packages/react-app/components/Navbar/Navbar.module.scss
@@ -0,0 +1,59 @@
+.Navbar,
+.NavbarFilled {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 0.8em 0 0.8em 2em;
+ width: 80%;
+ margin: auto;
+ margin-top: 1em;
+ box-sizing: border-box;
+ z-index: 100;
+ box-shadow: 0 0 #0000, 0 0 #0000, 0 2.65546px 95px rgba(0, 0, 0, 0.1);
+ border-bottom: none;
+ border-radius: 25px;
+
+ h3 {
+ margin: 0;
+ }
+
+ .Links {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-right: 1.5em;
+ gap: 1em;
+
+ .twitterAuth {
+ height: 40px;
+ width: 120px;
+ border-radius: 10px;
+ border: none;
+ font-size: 1.1em;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: #fff;
+ gap: 0.5em;
+ box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px 0px,
+ rgba(0, 0, 0, 0.06) 0px 1px 2px 0px;
+ background-color: #00acee;
+ cursor: pointer;
+ }
+ }
+
+ @media screen and (max-width: 700px) {
+ box-shadow: none;
+ width: 100%;
+ padding: 0.5em;
+
+ .Links a {
+ margin-right: 0.5em;
+ }
+ }
+}
+
+.NavbarFilled{
+ margin-top: 0;
+ box-shadow: none;
+}
\ No newline at end of file
diff --git a/devtip/packages/react-app/components/Navbar/Navbar.tsx b/devtip/packages/react-app/components/Navbar/Navbar.tsx
new file mode 100644
index 00000000..03c53d16
--- /dev/null
+++ b/devtip/packages/react-app/components/Navbar/Navbar.tsx
@@ -0,0 +1,78 @@
+import React, { useEffect, useState } from "react";
+import styles from "./Navbar.module.scss";
+import { ConnectButton } from "@rainbow-me/rainbowkit";
+import { RiTwitterFill } from "react-icons/ri";
+import {
+ getAuth,
+ signInWithPopup,
+ TwitterAuthProvider,
+ signOut,
+ setPersistence,
+ browserLocalPersistence,
+ User,
+} from "firebase/auth";
+import { app } from "@/firebase";
+import Link from "next/link";
+
+export interface CustomUser extends User {
+ accessToken?: string;
+ reloadUserInfo?: {
+ screenName: string;
+ };
+}
+
+function Navbar({ filled }: { filled?: boolean }) {
+ const [userAccessToken, setUserAccessToken] = useState(
+ ""
+ );
+ const auth = getAuth(app);
+ (async () => {
+ await setPersistence(auth, browserLocalPersistence);
+ })();
+ const user: CustomUser | null = auth.currentUser;
+ const provider = new TwitterAuthProvider();
+
+ const loginLogout = async () => {
+ if (user && user.accessToken) {
+ await signOut(auth);
+ setUserAccessToken("");
+ } else {
+ signInWithPopup(auth, provider)
+ .then(async (result) => {
+ const user: CustomUser = result.user;
+ setUserAccessToken(user.accessToken);
+ })
+ .catch((error) => {
+ console.log(error);
+ });
+ }
+ };
+
+ useEffect(() => {
+ if (user?.accessToken) {
+ setUserAccessToken(user.accessToken);
+ }
+ auth.onAuthStateChanged((user: CustomUser | null) => {
+ if (user && user.accessToken) {
+ setUserAccessToken(user.accessToken);
+ }
+ });
+ }, []);
+
+ return (
+
+
+ DevTip
+
+
+
+
+ {userAccessToken ? "Logout" : "Login"}
+
+
+
+
+ );
+}
+
+export default Navbar;
diff --git a/devtip/packages/react-app/components/QuickClick/QuickClick.module.scss b/devtip/packages/react-app/components/QuickClick/QuickClick.module.scss
new file mode 100644
index 00000000..79ed2c02
--- /dev/null
+++ b/devtip/packages/react-app/components/QuickClick/QuickClick.module.scss
@@ -0,0 +1,23 @@
+.quickValue {
+ color: #476520;
+ background-color: #ffffff;
+ width: 35px;
+ height: 35px;
+ border-radius: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ cursor: pointer;
+ border: 1px solid lighten($color: #476520, $amount: 35);
+ cursor: pointer;
+
+ &:hover {
+ border: 1px solid lighten($color: #476520, $amount: 20);
+ }
+
+ &Active {
+ border: #476520;
+ background-color: #476520;
+ color: #ffffff;
+ }
+}
diff --git a/devtip/packages/react-app/components/QuickClick/QuickClick.tsx b/devtip/packages/react-app/components/QuickClick/QuickClick.tsx
new file mode 100644
index 00000000..98eae79f
--- /dev/null
+++ b/devtip/packages/react-app/components/QuickClick/QuickClick.tsx
@@ -0,0 +1,23 @@
+import styles from "./QuickClick.module.scss";
+
+export default function QuickClick({
+ value,
+ amount,
+ setAmountHandler,
+}: {
+ value: number;
+ amount: number;
+ setAmountHandler: (value: number) => void;
+}) {
+ return (
+ setAmountHandler(value)}
+ >
+ {value}
+
+ );
+}
diff --git a/devtip/packages/react-app/components/Spinner/Spinner.module.scss b/devtip/packages/react-app/components/Spinner/Spinner.module.scss
new file mode 100644
index 00000000..81d69689
--- /dev/null
+++ b/devtip/packages/react-app/components/Spinner/Spinner.module.scss
@@ -0,0 +1,38 @@
+.spinner {
+ margin: auto !important;
+ width: 100% !important;
+ text-align: center !important;
+
+ & > div {
+ width: 15px !important;
+ height: 15px !important;
+ background-color: #fafafa !important;
+ z-index: 10 !important;
+ margin-left: 0.3em !important;
+
+ border-radius: 100% !important;
+ display: inline-block !important;
+ animation: sk-bouncedelay 1.4s infinite ease-in-out both;
+ }
+
+ .bounce1 {
+ animation-delay: -0.32s;
+ }
+
+ .bounce2 {
+ animation-delay: -0.16s;
+ }
+}
+
+@keyframes sk-bouncedelay {
+ 0%,
+ 80%,
+ 100% {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ }
+ 40% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+}
diff --git a/devtip/packages/react-app/components/Spinner/Spinner.tsx b/devtip/packages/react-app/components/Spinner/Spinner.tsx
new file mode 100644
index 00000000..4b494811
--- /dev/null
+++ b/devtip/packages/react-app/components/Spinner/Spinner.tsx
@@ -0,0 +1,12 @@
+import React from "react";
+import styles from "./Spinner.module.scss";
+
+export default function Spinner() {
+ return (
+
+ );
+}
diff --git a/devtip/packages/react-app/firebase.ts b/devtip/packages/react-app/firebase.ts
new file mode 100644
index 00000000..b55ea577
--- /dev/null
+++ b/devtip/packages/react-app/firebase.ts
@@ -0,0 +1,15 @@
+// Import the functions you need from the SDKs you need
+import { initializeApp } from "firebase/app";
+
+// Your web app's Firebase configuration
+const firebaseConfig = {
+ apiKey: "AIzaSyCDHbqAHQR5rJEZ3v6FkNB4yIchZdrvII8",
+ authDomain: "stackshift-w8.firebaseapp.com",
+ projectId: "stackshift-w8",
+ storageBucket: "stackshift-w8.appspot.com",
+ messagingSenderId: "780639890435",
+ appId: "1:780639890435:web:a28db714324ec34949b236",
+};
+
+// Initialize Firebase
+export const app = initializeApp(firebaseConfig);
diff --git a/devtip/packages/react-app/function/notify.ts b/devtip/packages/react-app/function/notify.ts
new file mode 100644
index 00000000..f849e92b
--- /dev/null
+++ b/devtip/packages/react-app/function/notify.ts
@@ -0,0 +1,16 @@
+import toast from "react-hot-toast";
+
+export const notify = (type: "success" | "error", message: string) =>
+ toast[type](message, {
+ style: {
+ border: "1px solid #476520",
+ padding: "10px",
+ color: "#000",
+ background: "#ffffff",
+ },
+ iconTheme: {
+ primary: "#476520",
+ secondary: "#FFFAEE",
+ },
+ duration: 3000,
+ });
diff --git a/devtip/packages/react-app/next.config.js b/devtip/packages/react-app/next.config.js
new file mode 100644
index 00000000..5ac72394
--- /dev/null
+++ b/devtip/packages/react-app/next.config.js
@@ -0,0 +1,13 @@
+/** @type {import('next').NextConfig} */
+const nextConfig = {
+ reactStrictMode: true,
+ swcMinify: true,
+ webpack: (config) => {
+ config.resolve.fallback = {
+ fs: false
+ }
+ return config
+ }
+}
+
+module.exports = nextConfig
diff --git a/devtip/packages/react-app/package.json b/devtip/packages/react-app/package.json
new file mode 100644
index 00000000..4c9f8c6b
--- /dev/null
+++ b/devtip/packages/react-app/package.json
@@ -0,0 +1,46 @@
+{
+ "name": "@devtip/react-app",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start",
+ "lint": "next lint"
+ },
+ "dependencies": {
+ "@celo/identity": "^4.1.0",
+ "@celo/poprf": "^0.1.9",
+ "@celo/rainbowkit-celo": "^1.0.0",
+ "@emotion/react": "^11.11.0",
+ "@emotion/styled": "^11.11.0",
+ "@heroicons/react": "^2.0.18",
+ "@mui/material": "^5.13.3",
+ "@rainbow-me/rainbowkit": "^1.0.0",
+ "axios": "^1.4.0",
+ "blind-threshold-bls": "https://github.com/celo-org/blind-threshold-bls-wasm#3d1013af",
+ "ethers": "^5.7.2",
+ "firebase": "^9.22.1",
+ "next": "^13.4.2",
+ "react": "18.2.0",
+ "react-dom": "18.2.0",
+ "react-firebase-hooks": "^5.1.1",
+ "react-hot-toast": "^2.4.1",
+ "react-icons": "^4.9.0",
+ "sass": "^1.62.1",
+ "viem": "^0.3.40",
+ "wagmi": "^1.0.5"
+ },
+ "devDependencies": {
+ "@types/node": "^20.2.1",
+ "@types/react": "^18.2.6",
+ "@types/react-dom": "^18.2.4",
+ "autoprefixer": "^10.4.14",
+ "eslint": "^8.40.0",
+ "eslint-config-next": "^13.4.2",
+ "typescript": "^5.0.4"
+ },
+ "browser": {
+ "net": false
+ }
+}
diff --git a/devtip/packages/react-app/pages/[user].tsx b/devtip/packages/react-app/pages/[user].tsx
new file mode 100644
index 00000000..d45ead03
--- /dev/null
+++ b/devtip/packages/react-app/pages/[user].tsx
@@ -0,0 +1,294 @@
+import {
+ ALFAJORES_CUSD_ADDRESS,
+ ALFAJORES_RPC,
+ FA_CONTRACT,
+ FA_PROXY_ADDRESS,
+ ODIS_PAYMENTS_CONTRACT,
+ ODIS_PAYMENTS_PROXY_ADDRESS,
+ STABLE_TOKEN_CONTRACT,
+ ISSUER_PRIVATE_KEY,
+ DEK_PRIVATE_KEY,
+} from "@/utils/constants";
+import {
+ AuthenticationMethod,
+ AuthSigner,
+ OdisContextName,
+} from "@celo/identity/lib/odis/query";
+import { ethers, Wallet } from "ethers";
+import React, { use, useEffect, useState } from "react";
+import axios from "axios";
+import { RiCupFill } from "react-icons/ri";
+import QuickClick from "@/components/QuickClick/QuickClick";
+import Spinner from "@/components/Spinner/Spinner";
+import { OdisUtils } from "@celo/identity";
+import { WebBlsBlindingClient } from "../utils/webBlindingClient";
+import { GetServerSideProps, GetServerSidePropsContext, NextPage } from "next";
+
+import { ISocialConnect } from "@/utils/ISocialConnect";
+
+import styles from "@/styles/user.module.scss";
+import { notify } from "@/function/notify";
+import Navbar from "@/components/Navbar/Navbar";
+import { useSendTransaction } from "wagmi";
+import { parseEther } from "viem";
+
+interface UserProfile {
+ fullName: string;
+ profilePicture: string;
+ username: string;
+ bio: string;
+}
+
+const User: NextPage<{ user: UserProfile }> = ({ user }) => {
+ let [sc, setSc] = useState();
+
+ const [amount, setAmount] = useState(1);
+ const [inputValue, setInputValue] = useState();
+ const [isDonating, setIsDonating] = useState(false);
+ const [addressToSend, setAddressToSend] = useState(null);
+ let { sendTransaction } = useSendTransaction({
+ to: addressToSend!,
+ value: parseEther(`${amount}`, "wei"),
+ });
+
+ useEffect(() => {
+ if (sc) {
+ setTimeout(() => {
+ lookupAddress();
+ }, 300);
+ }
+ }, [sc]);
+
+ useEffect(() => {
+ let provider = new ethers.providers.JsonRpcProvider(ALFAJORES_RPC);
+ let issuer = new Wallet(ISSUER_PRIVATE_KEY!, provider);
+ let serviceContext = OdisUtils.Query.getServiceContext(
+ OdisContextName.ALFAJORES
+ );
+ let blindingClient = new WebBlsBlindingClient(serviceContext.odisPubKey);
+ let quotaFee = ethers.utils.parseEther("0.01");
+ let authSigner: AuthSigner = {
+ authenticationMethod: AuthenticationMethod.ENCRYPTION_KEY,
+ rawKey: DEK_PRIVATE_KEY!,
+ };
+ let federatedAttestationsContract = new ethers.Contract(
+ FA_PROXY_ADDRESS!,
+ FA_CONTRACT.abi,
+ issuer
+ );
+ let odisPaymentsContract = new ethers.Contract(
+ ODIS_PAYMENTS_PROXY_ADDRESS!,
+ ODIS_PAYMENTS_CONTRACT.abi,
+ issuer
+ );
+ let stableTokenContract = new ethers.Contract(
+ ALFAJORES_CUSD_ADDRESS!,
+ STABLE_TOKEN_CONTRACT.abi,
+ issuer
+ );
+ let sCVars: ISocialConnect = {
+ issuerAddress: issuer.address,
+ federatedAttestationsContract,
+ odisPaymentsContract,
+ stableTokenContract,
+ authSigner,
+ serviceContext,
+ quotaFee,
+ blindingClient,
+ };
+ setSc(sCVars);
+ }, []);
+
+ const onChangeHandler = (e: React.ChangeEvent) => {
+ let manualAmount = e.target.value;
+ manualAmount === "" ? setAmount(1) : setAmount(parseInt(manualAmount));
+ setInputValue(parseInt(e.target.value));
+ };
+
+ const setAmountHandler = (value: number) => {
+ if (isDonating) return;
+
+ setAmount(value);
+ setInputValue(value);
+ };
+
+ const donate = () => {
+ // setIsDonating(true)
+ };
+
+ async function getObfuscatedIdentifier(identifier: string) {
+ let obfuscatedIdentifier = (
+ await OdisUtils.Identifier.getObfuscatedIdentifier(
+ identifier,
+ OdisUtils.Identifier.IdentifierPrefix.TWITTER,
+ sc!.issuerAddress,
+ sc!.authSigner,
+ sc!.serviceContext,
+ undefined,
+ undefined,
+ sc!.blindingClient
+ )
+ ).obfuscatedIdentifier;
+ return obfuscatedIdentifier;
+ }
+
+ async function lookupAddress() {
+ let obfuscatedIdentifier = getObfuscatedIdentifier(
+ user.username.toLowerCase()
+ );
+ let attestations =
+ await sc!.federatedAttestationsContract.lookupAttestations(
+ obfuscatedIdentifier,
+ [sc!.issuerAddress]
+ );
+ let [latestAddress] = attestations.accounts;
+ if (!latestAddress) {
+ notify("error", "No address found for this user");
+ }
+ setAddressToSend(latestAddress);
+ }
+
+ return (
+ <>
+
+
+
+
+
+
{user.fullName}
+
+ {user.bio ? user.bio : "This profile has no bio"}
+
+
+
+
+
+
+ Tip {user.username} some celo
+
+
+ {" "}
+
+ x
+
+
+
+
+
+
+ {addressToSend === null ? (
+
+ ) : (
+ <>
+ {addressToSend ? (
+
sendTransaction()}
+ >
+ {isDonating ? : `Tip ${amount} $CELO`}
+
+ ) : (
+
+ Account not mapped to an address
+
+ )}
+ >
+ )}
+
+
+
+ >
+ );
+};
+
+export const getServerSideProps: GetServerSideProps<{
+ user: UserProfile;
+}> = async (context: GetServerSidePropsContext) => {
+ const { user } = context.params as { user: string };
+
+ const res = await axios.get<
+ Promise<{
+ data: {
+ id: number;
+ name: string;
+ profile_image_url: string;
+ username: string;
+ description: string;
+ };
+ }>
+ >(`https://api.twitter.com/2/users/by/username/${user}`, {
+ headers: {
+ Authorization: "Bearer " + process.env.TWITTER_BEARER_TOKEN,
+ },
+ params: {
+ "user.fields":
+ "description,name,profile_image_url,username,verified,withheld",
+ },
+ });
+ const data = (await res.data).data;
+
+ // if no data, return not found and redirect to 404
+ if (!data?.id) {
+ return {
+ notFound: true,
+ redirect: {
+ destination: "/404",
+ permanent: false,
+ },
+ };
+ }
+ let profilePicture = data.profile_image_url.replace("_normal", "");
+
+ return {
+ props: {
+ user: {
+ fullName: data.name,
+ profilePicture,
+ username: data.username,
+ bio: data.description,
+ },
+ },
+ };
+};
+
+export default User;
diff --git a/devtip/packages/react-app/pages/_app.tsx b/devtip/packages/react-app/pages/_app.tsx
new file mode 100644
index 00000000..1a344c13
--- /dev/null
+++ b/devtip/packages/react-app/pages/_app.tsx
@@ -0,0 +1,54 @@
+import type { AppProps } from "next/app";
+import { RainbowKitProvider } from "@rainbow-me/rainbowkit";
+import { configureChains, createConfig, WagmiConfig } from "wagmi";
+import { jsonRpcProvider } from "wagmi/providers/jsonRpc";
+import celoGroups from "@celo/rainbowkit-celo/lists";
+import { Alfajores, Celo } from "@celo/rainbowkit-celo/chains";
+import "../styles/globals.scss";
+import "@rainbow-me/rainbowkit/styles.css";
+import { Toaster } from "react-hot-toast";
+
+const projectId = "celo-composer-project-id"; // get one at https://cloud.walletconnect.com/app
+
+const { chains, publicClient } = configureChains(
+ [Alfajores, Celo],
+ [
+ jsonRpcProvider({
+ rpc: (chain) => ({
+ http: "https://celo-alfajores.infura.io/v3/6b205f850b9745c590091e3dbbcf3a8c",
+ }),
+ }),
+ ]
+);
+
+const connectors = celoGroups({
+ chains,
+ projectId,
+ appName: (typeof document === "object" && document.title) || "Your App Name",
+});
+
+const wagmiConfig = createConfig({
+ autoConnect: true,
+ connectors,
+ publicClient: publicClient,
+});
+
+function App({ Component, pageProps }: AppProps) {
+ return (
+
+
+
+
+
+
+ );
+}
+
+export default App;
diff --git a/devtip/packages/react-app/pages/index.tsx b/devtip/packages/react-app/pages/index.tsx
new file mode 100644
index 00000000..5902edce
--- /dev/null
+++ b/devtip/packages/react-app/pages/index.tsx
@@ -0,0 +1,306 @@
+import {
+ ALFAJORES_CUSD_ADDRESS,
+ ALFAJORES_RPC,
+ FA_CONTRACT,
+ FA_PROXY_ADDRESS,
+ ODIS_PAYMENTS_CONTRACT,
+ ODIS_PAYMENTS_PROXY_ADDRESS,
+ STABLE_TOKEN_CONTRACT,
+ ISSUER_PRIVATE_KEY,
+ DEK_PRIVATE_KEY,
+} from "@/utils/constants";
+import {
+ AuthenticationMethod,
+ AuthSigner,
+ OdisContextName,
+} from "@celo/identity/lib/odis/query";
+import { ethers, Wallet } from "ethers";
+import { useAuthState } from "react-firebase-hooks/auth";
+import React, { use, useEffect, useState } from "react";
+import styles from "@/styles/home.module.scss";
+import { OdisUtils } from "@celo/identity";
+import { WebBlsBlindingClient } from "../utils/webBlindingClient";
+
+import Navbar, { CustomUser } from "@/components/Navbar/Navbar";
+import { getAuth } from "firebase/auth";
+import { app } from "@/firebase";
+import { useAccount } from "wagmi";
+import { ISocialConnect } from "@/utils/ISocialConnect";
+import { useRouter } from "next/router";
+import { notify } from "@/function/notify";
+import Spinner from "@/components/Spinner/Spinner";
+
+export default function Home() {
+ let { address } = useAccount();
+ let [sc, setSc] = useState();
+ const [processing, setProcessing] = useState(false);
+ const [username, setUsername] = useState("");
+ const auth = getAuth(app);
+ const [resolvedAccount, setResolvedAccount] = useState("");
+
+ const [user, loading] = useAuthState(auth);
+ const [baseUrl, setBaseUrl] = useState("");
+ const [isCopied, setIsCopied] = useState(false);
+
+ // Get the base URL
+ useEffect(() => {
+ setBaseUrl(window.location.origin);
+ }, []);
+
+ useEffect(() => {
+ if (username) {
+ setTimeout(() => {
+ lookupAddress(username);
+ }, 300);
+ }
+ }, [username]);
+
+ useEffect(() => {
+ let provider = new ethers.providers.JsonRpcProvider(ALFAJORES_RPC);
+ let issuer = new Wallet(ISSUER_PRIVATE_KEY!, provider);
+ let serviceContext = OdisUtils.Query.getServiceContext(
+ OdisContextName.ALFAJORES
+ );
+ let blindingClient = new WebBlsBlindingClient(serviceContext.odisPubKey);
+ let quotaFee = ethers.utils.parseEther("0.01");
+ let authSigner: AuthSigner = {
+ authenticationMethod: AuthenticationMethod.ENCRYPTION_KEY,
+ rawKey: DEK_PRIVATE_KEY!,
+ };
+ let federatedAttestationsContract = new ethers.Contract(
+ FA_PROXY_ADDRESS!,
+ FA_CONTRACT.abi,
+ issuer
+ );
+ let odisPaymentsContract = new ethers.Contract(
+ ODIS_PAYMENTS_PROXY_ADDRESS!,
+ ODIS_PAYMENTS_CONTRACT.abi,
+ issuer
+ );
+ let stableTokenContract = new ethers.Contract(
+ ALFAJORES_CUSD_ADDRESS!,
+ STABLE_TOKEN_CONTRACT.abi,
+ issuer
+ );
+ let sCVars: ISocialConnect = {
+ issuerAddress: issuer.address,
+ federatedAttestationsContract,
+ odisPaymentsContract,
+ stableTokenContract,
+ authSigner,
+ serviceContext,
+ quotaFee,
+ blindingClient,
+ };
+ setSc(sCVars);
+ }, []);
+
+ async function lookupAddress(username: string) {
+ let obfuscatedIdentifier = getObfuscatedIdentifier(username.toLowerCase());
+ let attestations =
+ await sc!.federatedAttestationsContract.lookupAttestations(
+ obfuscatedIdentifier,
+ [sc!.issuerAddress]
+ );
+ let [latestAddress] = attestations.accounts;
+ setResolvedAccount(latestAddress);
+ }
+
+ const setUsernameHandler = (e: React.ChangeEvent) => {
+ setUsername(e.target.value);
+ };
+
+ const submitFormHandler = (e: React.FormEvent) => {
+ e.preventDefault();
+ if (resolvedAccount) {
+ return deregisterIdentifier(username!);
+ }
+ if (username) {
+ return registerAttestation(username, address!);
+ }
+ };
+
+ useEffect(() => {
+ if (user) {
+ // @ts-ignore
+ setUsername(user?.reloadUserInfo?.screenName.toLowerCase());
+ }
+ }, [user]);
+
+ async function registerAttestation(identifier: string, account: string) {
+ try {
+ setProcessing(true);
+
+ if (!user?.providerId || !address) {
+ notify("error", "Please login first.");
+ return;
+ }
+
+ // check and top up ODIS quota
+ await checkAndTopUpODISQuota();
+ let nowTimestamp = Math.floor(new Date().getTime() / 1000);
+ let obfuscatedIdentifier = getObfuscatedIdentifier(identifier);
+ await sc!.federatedAttestationsContract.registerAttestationAsIssuer(
+ obfuscatedIdentifier,
+ account,
+ nowTimestamp
+ );
+ notify("success", "Address mapped.");
+ } catch (e) {
+ notify("error", "Error mapping address.");
+ } finally {
+ setProcessing(false);
+ }
+ }
+
+ async function getObfuscatedIdentifier(identifier: string) {
+ let obfuscatedIdentifier = (
+ await OdisUtils.Identifier.getObfuscatedIdentifier(
+ identifier,
+ OdisUtils.Identifier.IdentifierPrefix.TWITTER,
+ sc!.issuerAddress,
+ sc!.authSigner,
+ sc!.serviceContext,
+ undefined,
+ undefined,
+ sc!.blindingClient
+ )
+ ).obfuscatedIdentifier;
+ return obfuscatedIdentifier;
+ }
+
+ async function checkAndTopUpODISQuota() {
+ const { remainingQuota } = await OdisUtils.Quota.getPnpQuotaStatus(
+ sc!.issuerAddress,
+ sc!.authSigner,
+ sc!.serviceContext
+ );
+ // console.log("remainingQuota", { remainingQuota });
+ if (remainingQuota < 1) {
+ let currentAllowance = await sc!.stableTokenContract.allowance(
+ sc!.issuerAddress,
+ sc!.odisPaymentsContract.address
+ );
+ let enoughAllowance = false;
+ if (sc!.quotaFee.gt(currentAllowance)) {
+ let approvalTxReceipt = await sc!.stableTokenContract.increaseAllowance(
+ sc!.odisPaymentsContract.address,
+ sc!.quotaFee
+ );
+ enoughAllowance = approvalTxReceipt.status;
+ } else {
+ enoughAllowance = true;
+ }
+ if (enoughAllowance) {
+ let odisPayment = await sc!.odisPaymentsContract.payInCUSD(
+ sc!.issuerAddress,
+ sc!.quotaFee
+ );
+ } else {
+ throw "ODIS => cUSD approval failed";
+ }
+ }
+ }
+
+ async function deregisterIdentifier(identifier: string) {
+ // console.log("deregisterIdentifier", { identifier });
+ try {
+ setProcessing(true);
+
+ if (address !== resolvedAccount) {
+ notify("error", "Address does not match.");
+ return;
+ }
+
+ let obfuscatedIdentifier = getObfuscatedIdentifier(identifier);
+ // console.log("deregisterIdentifier", { obfuscatedIdentifier });
+ await sc!.federatedAttestationsContract.revokeAttestation(
+ obfuscatedIdentifier,
+ sc!.issuerAddress,
+ address
+ );
+ notify("success", "Address de-registered.");
+ } catch (error) {
+ notify("error", "Error de-registering address.");
+ } finally {
+ setProcessing(false);
+ }
+ }
+
+ async function copyTextToClipboard(text: string) {
+ if ("clipboard" in navigator) {
+ return await navigator.clipboard.writeText(text);
+ } else {
+ return document.execCommand("copy", true, text);
+ }
+ }
+
+ // onClick handler function for the copy button
+ const handleCopyClick = () => {
+ // Asynchronously call copyTextToClipboard
+ copyTextToClipboard(`${baseUrl}/${username}`)
+ .then(() => {
+ // If successful, update the isCopied state value
+ notify("success", "Copied to clipboard.");
+ setIsCopied(true);
+ setTimeout(() => {
+ setIsCopied(false);
+ }, 1500);
+ })
+ .catch((err) => {
+ console.log(err);
+ });
+ };
+
+ return (
+ <>
+
+
+
+
Supporting devs is the foundation of innovation
+
+ Create profile. Share your link. Recieve tips. It's easier than
+ you think.
+
+
+
+ Click on the link to copy your unique url after starting your page.
+
+
+ {resolvedAccount && (
+
+ Username: {username![0].toUpperCase() + username!.slice(1)}
+
+ Connected Account: {resolvedAccount}
+
+ )}
+
+ >
+ );
+}
diff --git a/devtip/packages/react-app/public/blind_threshold_bls_bg.wasm b/devtip/packages/react-app/public/blind_threshold_bls_bg.wasm
new file mode 100644
index 00000000..be17ccc5
Binary files /dev/null and b/devtip/packages/react-app/public/blind_threshold_bls_bg.wasm differ
diff --git a/devtip/packages/react-app/public/favicon.ico b/devtip/packages/react-app/public/favicon.ico
new file mode 100644
index 00000000..52c5ead8
Binary files /dev/null and b/devtip/packages/react-app/public/favicon.ico differ
diff --git a/devtip/packages/react-app/public/logo.svg b/devtip/packages/react-app/public/logo.svg
new file mode 100755
index 00000000..06bf9156
--- /dev/null
+++ b/devtip/packages/react-app/public/logo.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/devtip/packages/react-app/styles/globals.scss b/devtip/packages/react-app/styles/globals.scss
new file mode 100644
index 00000000..c8ec6fa3
--- /dev/null
+++ b/devtip/packages/react-app/styles/globals.scss
@@ -0,0 +1,13 @@
+@import url("https://fonts.googleapis.com/css2?family=Sora:wght@300;400;500;600&display=swap");
+
+* {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+ font-family: "Sora", sans-serif;
+}
+
+a {
+ text-decoration: none;
+ color: inherit;
+}
diff --git a/devtip/packages/react-app/styles/home.module.scss b/devtip/packages/react-app/styles/home.module.scss
new file mode 100644
index 00000000..15ede36c
--- /dev/null
+++ b/devtip/packages/react-app/styles/home.module.scss
@@ -0,0 +1,123 @@
+.Home {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ height: 80vh;
+ width: 100%;
+ justify-content: center;
+
+ @media screen and (max-width: 700px) {
+ margin: 3.5em auto;
+ position: absolute;
+ }
+
+ .Info {
+ margin: auto;
+ text-align: center;
+
+ h1 {
+ font-size: 3em;
+ margin: 0;
+ max-width: 720px;
+ margin: auto;
+
+ @media screen and (max-width: 480px) {
+ font-size: 2em;
+ }
+ }
+
+ p {
+ margin: 0 auto;
+ margin-top: 1em;
+ font-size: 1.2em;
+ max-width: 500px;
+ }
+
+ .Form {
+ border-radius: 45px;
+ border: 1px solid #dedede;
+ width: fit-content;
+ margin: auto;
+ margin-top: 2em;
+ font-size: 1.3em;
+ font-weight: bold;
+ padding: 0.3em;
+ padding-left: 1.5em;
+
+ div {
+ display: inline;
+ }
+
+ button {
+ outline: none;
+ border: none;
+ border-radius: 30px;
+ background-color: #476520;
+ color: #ffffff;
+ padding: 0.8em;
+ cursor: pointer;
+ font-size: 0.9em;
+ cursor: pointer;
+
+ &.disabled {
+ background-color: lighten($color: #476520, $amount: 35);
+ min-width: 150px;
+ cursor: not-allowed;
+ }
+ }
+
+ input {
+ font-size: 0.9em;
+ width: 15em;
+ outline: none;
+ border: none;
+
+ &:disabled {
+ background: transparent;
+ cursor: not-allowed;
+ }
+ }
+
+ @media screen and (max-width: 700px) {
+ border: none;
+ width: 94%;
+ margin: auto;
+ padding: 0;
+
+ div {
+ display: block;
+ border-radius: 45px;
+ border: 1px solid #dedede;
+ width: 100%;
+ margin: auto;
+ margin-top: 2em;
+ font-size: 1.3em;
+ font-weight: bold;
+ padding: 0.5em 1em;
+ box-sizing: border-box;
+ text-align: left;
+
+ input {
+ width: 30%;
+ }
+ }
+
+ button {
+ display: block;
+ width: 100%;
+ margin-top: 0.5em;
+ }
+ }
+
+ @media screen and (max-width: 450px) {
+ font-size: 1em;
+ }
+ }
+
+ small {
+ display: block;
+ font-size: 0.9em;
+ margin-top: 1em;
+ }
+ }
+}
diff --git a/devtip/packages/react-app/styles/user.module.scss b/devtip/packages/react-app/styles/user.module.scss
new file mode 100644
index 00000000..d67fd74c
--- /dev/null
+++ b/devtip/packages/react-app/styles/user.module.scss
@@ -0,0 +1,174 @@
+@mixin shareButton {
+ cursor: pointer;
+}
+
+.Contribution {
+ .Header {
+ width: 100%;
+ height: 31.1vmin;
+ background-image: url("https://miro.medium.com/v2/resize:fit:1358/1*b8qiCBoaRJ0BVCwjJpZzkw.jpeg");
+ background-size: cover;
+ background-position: center;
+ position: relative;
+
+ .profilePicture {
+ background-image: url("https://blockbuild.africa/wp-content/uploads/2022/02/Celo.jpg");
+ width: 15vmin;
+ height: 15vmin;
+ background-position: center;
+ background-size: cover;
+ border-radius: 100%;
+ border: 5px solid #ffffff;
+ margin: auto;
+ bottom: -12%;
+ left: 50%;
+ transform: translateX(-50%);
+ position: absolute;
+
+ @media screen and (max-width: 468px) {
+ width: 110px;
+ height: 110px;
+ bottom: -25%;
+ }
+ }
+ }
+
+ .Info {
+ margin-top: 2.1em;
+ text-align: center;
+
+ h1 {
+ margin: 0.5em;
+ }
+
+ p {
+ font-size: 1.2em;
+ margin: 0;
+
+ &:nth-of-type(1) {
+ margin-bottom: 0.5em;
+ }
+
+ &.supporters {
+ color: gray;
+ }
+ }
+ }
+
+ .supportBlock {
+ width: 95%;
+ max-width: 450px;
+ margin: auto;
+ margin-top: 2em;
+ margin-bottom: 5em;
+
+ .support {
+ flex: 2.2;
+ border: 1px solid #dedede;
+ padding: 2em;
+ border-radius: 7px;
+ margin-left: 1em;
+
+ .input {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ border: 1px solid lighten($color: #476520, $amount: 20);
+ background-color: lighten($color: #476520, $amount: 35);
+ padding: 2em 1em;
+ margin: 1em auto;
+ border-radius: 7px;
+
+ .material {
+ font-size: 3em;
+ }
+
+ input {
+ width: 35px;
+ height: 35px;
+ font-size: 1.1em;
+ text-align: center;
+ padding: 0 0.2em;
+ outline: none;
+ border: 1px solid #dedede;
+ border-radius: 5px;
+
+ &::-webkit-outer-spin-button,
+ &::-webkit-inner-spin-button {
+ -webkit-appearance: none;
+ margin: 0;
+ }
+ }
+ }
+
+ h3 {
+ margin: 0;
+ font-size: 1.5em;
+ span {
+ color: gray;
+ }
+ }
+
+ textarea {
+ width: 100%;
+ display: block;
+ font-size: 1em;
+ height: 90px;
+ padding: 4%;
+ outline: none;
+ border-radius: 7px;
+ border: 1px solid #dedede;
+ box-sizing: border-box;
+
+ &:disabled {
+ cursor: not-allowed;
+ }
+ }
+
+ button {
+ display: block;
+ margin-top: 2em;
+ font-size: 1em;
+ text-align: center;
+ outline: none;
+ border: none;
+ border-radius: 25px;
+ width: 100%;
+ height: 50px;
+ background-color: #476520;
+ color: #ffffff;
+ cursor: pointer;
+
+ &:hover {
+ background-color: lighten($color: #476520, $amount: 3);
+ }
+
+ &:disabled {
+ background-color: lighten($color: #476520, $amount: 25);
+ cursor: not-allowed;
+ }
+ }
+
+ @media screen and (max-width: 992px) {
+ margin-bottom: 2em;
+ }
+
+ @media screen and (max-width: 481px) {
+ width: 100%;
+ box-sizing: border-box;
+ margin: 0 auto 2em;
+ }
+ }
+
+ @media screen and (max-width: 992px) {
+ flex-direction: column-reverse;
+ align-items: center;
+ width: 94%;
+
+ .supportInfo {
+ width: 100%;
+ margin: auto;
+ }
+ }
+ }
+}
diff --git a/devtip/packages/react-app/tsconfig.json b/devtip/packages/react-app/tsconfig.json
new file mode 100644
index 00000000..c66d433a
--- /dev/null
+++ b/devtip/packages/react-app/tsconfig.json
@@ -0,0 +1,30 @@
+{
+ "compilerOptions": {
+ "target": "es5",
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "noEmit": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "incremental": true,
+ "baseUrl": ".",
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ],
+ "paths": {
+ "@/*": ["*"],
+ "@local-contracts/*": ["../hardhat/*"]
+ },
+ },
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
+ "exclude": ["node_modules"]
+}
diff --git a/devtip/packages/react-app/utils/ISocialConnect.ts b/devtip/packages/react-app/utils/ISocialConnect.ts
new file mode 100644
index 00000000..20e88da3
--- /dev/null
+++ b/devtip/packages/react-app/utils/ISocialConnect.ts
@@ -0,0 +1,26 @@
+import { ethers } from "ethers";
+import { AuthSigner } from "@celo/identity/lib/odis/query";
+import { WebBlsBlindingClient } from "./webBlindingClient";
+
+interface ServiceContext {
+ odisUrl: string;
+ odisPubKey: string;
+}
+
+export interface ISocialConnect {
+
+ children?: React.ReactNode;
+
+ // General
+ issuerAddress: string;
+ authSigner: AuthSigner;
+ serviceContext: ServiceContext;
+ quotaFee: ethers.BigNumber;
+ blindingClient: WebBlsBlindingClient;
+
+ // Contracts
+ federatedAttestationsContract: ethers.Contract;
+ odisPaymentsContract: ethers.Contract;
+ stableTokenContract: ethers.Contract;
+
+}
\ No newline at end of file
diff --git a/devtip/packages/react-app/utils/constants.ts b/devtip/packages/react-app/utils/constants.ts
new file mode 100644
index 00000000..ad5cf5aa
--- /dev/null
+++ b/devtip/packages/react-app/utils/constants.ts
@@ -0,0 +1,20 @@
+export const FA_CONTRACT = require("@/abis/FederatedAttestations.json");
+export const FA_PROXY_CONTRACT = require("@/abis/FederatedAttestationsProxy.json");
+export const REGISTRY_CONTRACT = require("@/abis/Registry.json");
+export const ESCROW_PROXY_CONTRACT = require("@/abis/EscrowProxy.json");
+export const ESCROW_CONTRACT = require("@/abis/Escrow.json");
+export const ODIS_PAYMENTS_CONTRACT = require("@/abis/OdisPayments.json");
+export const STABLE_TOKEN_CONTRACT = require("@/abis/StableToken.json");
+export const ACCOUNTS_CONTRACT = require("@/abis/Accounts.json")
+
+export const ALFAJORES_RPC = process.env.NEXT_PUBLIC_ALFAJORES_RPC;
+export const ALFAJORES_ACCOUNT = process.env.NEXT_PUBLIC_ALFAJORES_ACCOUNT;
+export const ALFAJORES_ACCOUNT_PK = process.env.NEXT_PUBLIC_ALFAJORES_ACCOUNT_PK;
+export const FA_PROXY_ADDRESS = process.env.NEXT_PUBLIC_FA_PROXY_ADDRESS;
+export const ESCROW_PROXY_ADDRESS = process.env.NEXT_PUBLIC_ESCROW_PROXY_ADDRESS;
+export const ODIS_PAYMENTS_PROXY_ADDRESS = process.env.NEXT_PUBLIC_ODIS_PAYMENTS_PROXY_ADDRESS;
+export const ALFAJORES_CUSD_ADDRESS = process.env.NEXT_PUBLIC_ALFAJORES_CUSD_ADDRESS;
+export const ACCOUNTS_PROXY_ADDRESS = process.env.NEXT_PUBLIC_ACCOUNTS_PROXY_ADDRESS;
+export const ISSUER_PRIVATE_KEY = process.env.NEXT_PUBLIC_ISSUER_PRIVATE_KEY;
+export const DEK_PUBLIC_KEY = process.env.NEXT_PUBLIC_DEK_PUBLIC_KEY;
+export const DEK_PRIVATE_KEY = process.env.NEXT_PUBLIC_DEK_PRIVATE_KEY;
\ No newline at end of file
diff --git a/devtip/packages/react-app/utils/webBlindingClient.ts b/devtip/packages/react-app/utils/webBlindingClient.ts
new file mode 100644
index 00000000..89cc2825
--- /dev/null
+++ b/devtip/packages/react-app/utils/webBlindingClient.ts
@@ -0,0 +1,58 @@
+import { randomBytes } from "crypto";
+import thresholdBls from "blind-threshold-bls";
+import { BlsBlindingClient } from "@celo/identity/lib/odis/bls-blinding-client";
+
+interface BlindedMessage {
+ blindingFactor: Uint8Array;
+ message: Uint8Array;
+}
+
+export class WebBlsBlindingClient implements BlsBlindingClient {
+ private odisPubKey: Uint8Array;
+ private blindedValue: BlindedMessage | undefined;
+ private rawMessage: Buffer | undefined;
+
+ constructor(odisPubKey: string) {
+ this.odisPubKey = Buffer.from(odisPubKey, "base64");
+ this.init();
+ }
+
+ async init() {
+ await thresholdBls.init("./blind_threshold_bls_bg.wasm");
+ }
+
+ async blindMessage(
+ base64PhoneNumber: string,
+ seed?: Buffer
+ ): Promise {
+ const userSeed = seed ?? randomBytes(32);
+ if (!seed) {
+ console.warn(
+ "Warning: Use a private deterministic seed (e.g. DEK private key) to preserve user quota when requests are replayed."
+ );
+ }
+ this.rawMessage = Buffer.from(base64PhoneNumber, "base64");
+ this.blindedValue = await thresholdBls.blind(this.rawMessage, userSeed);
+ const blindedMessage = this.blindedValue.message;
+ return Buffer.from(blindedMessage).toString("base64");
+ }
+
+ async unblindAndVerifyMessage(base64BlindSig: string): Promise {
+ if (!this.rawMessage || !this.blindedValue) {
+ throw new Error("Must call blind before unblinding");
+ }
+
+ const blindedSignature = Buffer.from(base64BlindSig, "base64");
+ const unblindMessage = await thresholdBls.unblind(
+ blindedSignature,
+ this.blindedValue.blindingFactor
+ );
+ // this throws on error
+ await thresholdBls.verify(
+ this.odisPubKey,
+ this.rawMessage,
+ unblindMessage
+ );
+ return Buffer.from(unblindMessage).toString("base64");
+ }
+}
\ No newline at end of file
diff --git a/devtip/yarn.lock b/devtip/yarn.lock
new file mode 100644
index 00000000..0bcd67bc
--- /dev/null
+++ b/devtip/yarn.lock
@@ -0,0 +1,8406 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@adraffy/ens-normalize@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.9.0.tgz#223572538f6bea336750039bb43a4016dcc8182d"
+ integrity sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==
+
+"@babel/code-frame@^7.0.0":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39"
+ integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==
+ dependencies:
+ "@babel/highlight" "^7.18.6"
+
+"@babel/helper-module-imports@^7.16.7":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af"
+ integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==
+ dependencies:
+ "@babel/types" "^7.21.4"
+
+"@babel/helper-string-parser@^7.21.5":
+ version "7.21.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd"
+ integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==
+
+"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1":
+ version "7.19.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
+ integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
+
+"@babel/highlight@^7.18.6":
+ version "7.18.6"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf"
+ integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.18.6"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
+
+"@babel/runtime@^7.12.5", "@babel/runtime@^7.17.2", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7":
+ version "7.22.3"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.3.tgz#0a7fce51d43adbf0f7b517a71f4c3aaca92ebcbb"
+ integrity sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==
+ dependencies:
+ regenerator-runtime "^0.13.11"
+
+"@babel/types@^7.21.4":
+ version "7.22.4"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.4.tgz#56a2653ae7e7591365dabf20b76295410684c071"
+ integrity sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA==
+ dependencies:
+ "@babel/helper-string-parser" "^7.21.5"
+ "@babel/helper-validator-identifier" "^7.19.1"
+ to-fast-properties "^2.0.0"
+
+"@celo/base@3.2.0", "@celo/base@^3.1.0":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@celo/base/-/base-3.2.0.tgz#19dcff6a822abb1f6b57af8f9db35a4c673aee62"
+ integrity sha512-9wfZYiYv7dzt17a29fxU6sV7JssyXfpSQ9kPSpfOlsewPICXwfOMQ+25Jn6xZu20Vx9rmKebmLHiQyiuYEDOcQ==
+
+"@celo/base@4.1.0":
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/@celo/base/-/base-4.1.0.tgz#9cd45f1c7d0ac61b4e2e98c046066f9eb9e143e9"
+ integrity sha512-Q9wKLa4JJw06FXpToZm5PYfFYjx+tvwIQlvFofx+GleX+uq+BT/gdxgTQ/c08OrxZUyc53TUdqSCs+88VlhmlA==
+
+"@celo/connect@3.2.0":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@celo/connect/-/connect-3.2.0.tgz#547023b017c319c98020daaadc14dd3d3f0455ce"
+ integrity sha512-iLOLo8d1OqNcX827/iCfWCeWaewUl0kyhL1xgyXrf//YaPU+ljKtruJmiLLrxkfdB/etWUdcryrbmuUhjHZmKg==
+ dependencies:
+ "@celo/base" "3.2.0"
+ "@celo/utils" "3.2.0"
+ "@types/debug" "^4.1.5"
+ "@types/utf8" "^2.1.6"
+ bignumber.js "^9.0.0"
+ debug "^4.1.1"
+ utf8 "3.0.0"
+
+"@celo/connect@4.1.0":
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/@celo/connect/-/connect-4.1.0.tgz#bcdd2a37e7c6e034371a097810f7e64444de397e"
+ integrity sha512-1PaPy/b9ZLtXGCNN7lqlt0Nqsw/Ql20iCcOZbrAhoN9HkxtHI/yMK7p9aMGDR0Qy4jEi123p8kt5qgJhH2IkKg==
+ dependencies:
+ "@celo/base" "4.1.0"
+ "@celo/utils" "4.1.0"
+ "@types/debug" "^4.1.5"
+ "@types/utf8" "^2.1.6"
+ bignumber.js "^9.0.0"
+ debug "^4.1.1"
+ utf8 "3.0.0"
+
+"@celo/contractkit@4.1.0":
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/@celo/contractkit/-/contractkit-4.1.0.tgz#6e88edca10a67c90eaa5e58b64e0dda68a1df87e"
+ integrity sha512-JmlCMrU2o09zjA6hiRixdKzTTmwkm2STL39sraYD96JMJsywwnu300oRMEupDZN3HobwStKTuTnR8r+xGeWT9Q==
+ dependencies:
+ "@celo/base" "4.1.0"
+ "@celo/connect" "4.1.0"
+ "@celo/utils" "4.1.0"
+ "@celo/wallet-local" "4.1.0"
+ "@types/bn.js" "^5.1.0"
+ "@types/debug" "^4.1.5"
+ bignumber.js "^9.0.0"
+ cross-fetch "^3.0.6"
+ debug "^4.1.1"
+ fp-ts "2.1.1"
+ io-ts "2.0.1"
+ semver "^7.3.5"
+ web3 "1.3.6"
+
+"@celo/contractkit@^3.1.0":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@celo/contractkit/-/contractkit-3.2.0.tgz#c0886e3a01534a199618fce65c6861cecb0c5ed1"
+ integrity sha512-kt4ViBRMg7ezCPi2SdcrYdDorA1Meg/qk97/u4izEIthl9GM4QSRfhhHYsbXYm0NV/MZ2BkS0cCsQ/SHcILSaA==
+ dependencies:
+ "@celo/base" "3.2.0"
+ "@celo/connect" "3.2.0"
+ "@celo/utils" "3.2.0"
+ "@celo/wallet-local" "3.2.0"
+ "@types/bn.js" "^5.1.0"
+ "@types/debug" "^4.1.5"
+ bignumber.js "^9.0.0"
+ cross-fetch "^3.0.6"
+ debug "^4.1.1"
+ fp-ts "2.1.1"
+ io-ts "2.0.1"
+ semver "^7.3.5"
+ web3 "1.3.6"
+
+"@celo/identity@^4.1.0":
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/@celo/identity/-/identity-4.1.0.tgz#8f6b3ed3b5d63016f9cec0f8b84e03cdd9c21d17"
+ integrity sha512-ZWOyohdQ2g2XZH7JYWYL+3nma3vtCSGclSu371ZWAp+BpS0wF1+Qo7L8a6Q2/rD0340+tZLqtinRz1k2JlfhkA==
+ dependencies:
+ "@celo/base" "4.1.0"
+ "@celo/contractkit" "4.1.0"
+ "@celo/phone-number-privacy-common" "^2.0.2"
+ "@celo/utils" "4.1.0"
+ "@types/debug" "^4.1.5"
+ bignumber.js "^9.0.0"
+ blind-threshold-bls "https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a"
+ cross-fetch "3.0.4"
+ debug "^4.1.1"
+ elliptic "^6.5.4"
+ fp-ts "2.1.1"
+ io-ts "2.0.1"
+
+"@celo/phone-number-privacy-common@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@celo/phone-number-privacy-common/-/phone-number-privacy-common-2.0.2.tgz#56528e80b66b8493676436fb60f0e390977fd0bf"
+ integrity sha512-bQ3ufYADU+LDnZyQPl+/zVQMTPREgwmYXFremKkm4nlTm+83Ti9G7obXeMkFtDrG//vvgC8ryMHq0ZkYh5XkFA==
+ dependencies:
+ "@celo/base" "^3.1.0"
+ "@celo/contractkit" "^3.1.0"
+ "@celo/phone-utils" "^3.1.0"
+ "@celo/utils" "^3.1.0"
+ bignumber.js "^9.0.0"
+ bunyan "1.8.12"
+ bunyan-debug-stream "2.0.0"
+ bunyan-gke-stackdriver "0.1.2"
+ dotenv "^8.2.0"
+ elliptic "^6.5.4"
+ io-ts "2.0.1"
+ is-base64 "^1.1.0"
+
+"@celo/phone-utils@^3.1.0":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@celo/phone-utils/-/phone-utils-3.2.0.tgz#e8e2716225eb1732f9e0eeae18812666445627e0"
+ integrity sha512-TbEKN7emsQY3nac7Lv5XkPA7HWXjrhuRpbtVDsJ8uB3Pbu9zAYCs0J8QlikEUJLPGoRA3oCZLri54GhWFG84BQ==
+ dependencies:
+ "@celo/base" "3.2.0"
+ "@celo/utils" "3.2.0"
+ "@types/country-data" "^0.0.0"
+ "@types/ethereumjs-util" "^5.2.0"
+ "@types/google-libphonenumber" "^7.4.23"
+ "@types/node" "^10.12.18"
+ country-data "^0.0.31"
+ fp-ts "2.1.1"
+ google-libphonenumber "^3.2.27"
+ io-ts "2.0.1"
+
+"@celo/poprf@^0.1.9":
+ version "0.1.9"
+ resolved "https://registry.yarnpkg.com/@celo/poprf/-/poprf-0.1.9.tgz#38c514ce0f572b80edeb9dc280b6cf5e9d7c2a75"
+ integrity sha512-+993EA/W+TBCZyY5G0B2EVdXnPX6t2AldgRAIMaT9WIqTwZKi/TcdJDUQl8mj7HEHMPHlpgCBOVgaHkUcwo/5A==
+
+"@celo/rainbowkit-celo@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@celo/rainbowkit-celo/-/rainbowkit-celo-1.0.0.tgz#b8f1a5e5325295c6f4b3ad00fe6e94fab98142aa"
+ integrity sha512-DTi48TUEdnJF9Za2wrKhuMuO3sGwf3OHooK+5dryqy8zRbJQXkf2f5VOM1qlKqKbRiwBQQxdxDOh/VE44+eO3g==
+ dependencies:
+ "@wagmi/chains" "^0.2.22"
+
+"@celo/utils@3.2.0", "@celo/utils@^3.1.0":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@celo/utils/-/utils-3.2.0.tgz#1dc39f619d24c3974d306cad23db7cdf3f9d487e"
+ integrity sha512-Om1mTzwsdV6FVPvraafcJeRnzz7Xv/lyGmyZaoEZ9fErRadu9ZrOsuDQniYe+lD78DQ0NATxJL04WjhEKVkn+A==
+ dependencies:
+ "@celo/base" "3.2.0"
+ "@types/bn.js" "^5.1.0"
+ "@types/elliptic" "^6.4.9"
+ "@types/ethereumjs-util" "^5.2.0"
+ "@types/node" "^10.12.18"
+ bignumber.js "^9.0.0"
+ elliptic "^6.5.4"
+ ethereumjs-util "^5.2.0"
+ io-ts "2.0.1"
+ web3-eth-abi "1.3.6"
+ web3-utils "1.3.6"
+
+"@celo/utils@4.1.0":
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/@celo/utils/-/utils-4.1.0.tgz#ffbfedb8d5866af8d309b57a79dfb35870e368e8"
+ integrity sha512-N0ijAXAGFQavX75clVXhGOVTzSpv/AJmh+igYUCNVzyF0s/Ms/l9WjjEQsd0c3uWRkWBLXiKmCNTI9LZXazjkw==
+ dependencies:
+ "@celo/base" "4.1.0"
+ "@types/bn.js" "^5.1.0"
+ "@types/elliptic" "^6.4.9"
+ "@types/ethereumjs-util" "^5.2.0"
+ "@types/node" "^10.12.18"
+ bignumber.js "^9.0.0"
+ elliptic "^6.5.4"
+ ethereumjs-util "^5.2.0"
+ io-ts "2.0.1"
+ web3-eth-abi "1.3.6"
+ web3-utils "1.3.6"
+
+"@celo/wallet-base@3.2.0":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@celo/wallet-base/-/wallet-base-3.2.0.tgz#feff094fd43fb651f3f742b6a73dc3b740b0c39c"
+ integrity sha512-lwhesT2BkXIyPI/ox/QbVVCRtLzTAGO25M3TlWBfSCzkRAf/AiV41lzEf9J7A1ozDKXS9s7bj8odiRkMAcelyQ==
+ dependencies:
+ "@celo/base" "3.2.0"
+ "@celo/connect" "3.2.0"
+ "@celo/utils" "3.2.0"
+ "@types/debug" "^4.1.5"
+ "@types/ethereumjs-util" "^5.2.0"
+ bignumber.js "^9.0.0"
+ debug "^4.1.1"
+ eth-lib "^0.2.8"
+ ethereumjs-util "^5.2.0"
+
+"@celo/wallet-base@4.1.0":
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/@celo/wallet-base/-/wallet-base-4.1.0.tgz#890ad567b73ad59ba7f8eb060372fd8ab8476bb7"
+ integrity sha512-fc6DGI6vcwGE/z3hT/7rZkQ9nvv/7l8RAEmof05zqMCdXdqaq135GWuE5H7gcC/qCLJzRNVpPGcWAPKUQ4z03A==
+ dependencies:
+ "@celo/base" "4.1.0"
+ "@celo/connect" "4.1.0"
+ "@celo/utils" "4.1.0"
+ "@types/debug" "^4.1.5"
+ "@types/ethereumjs-util" "^5.2.0"
+ bignumber.js "^9.0.0"
+ debug "^4.1.1"
+ eth-lib "^0.2.8"
+ ethereumjs-util "^5.2.0"
+
+"@celo/wallet-local@3.2.0":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@celo/wallet-local/-/wallet-local-3.2.0.tgz#905dd18a3285852a8341e5683beda94512c0f4f8"
+ integrity sha512-hR70gzNCDHgf/GskaaLtB7Jz4AqJEW0b+1jG1rsuAyaXLJomSRADGBwUUgMy1dKU87fcQ9h7Uh+AuRAP4/5COQ==
+ dependencies:
+ "@celo/connect" "3.2.0"
+ "@celo/utils" "3.2.0"
+ "@celo/wallet-base" "3.2.0"
+ "@types/ethereumjs-util" "^5.2.0"
+ eth-lib "^0.2.8"
+ ethereumjs-util "^5.2.0"
+
+"@celo/wallet-local@4.1.0":
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/@celo/wallet-local/-/wallet-local-4.1.0.tgz#e75ffb44f0352585db13f823034230d14064af1e"
+ integrity sha512-nG7f77gblF3CQ3811LOtmoLr8yC+f+G6QjkgUV9GmFNBDdUNQZf7OM1ZQaYib10D6OwY0UPxlP9N+tweVWDOdA==
+ dependencies:
+ "@celo/connect" "4.1.0"
+ "@celo/utils" "4.1.0"
+ "@celo/wallet-base" "4.1.0"
+ "@types/ethereumjs-util" "^5.2.0"
+ eth-lib "^0.2.8"
+ ethereumjs-util "^5.2.0"
+
+"@coinbase/wallet-sdk@^3.6.6":
+ version "3.6.6"
+ resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-3.6.6.tgz#4a0758fe0fe0ba3ed7e33b5bb6eb094ff8bd6c98"
+ integrity sha512-vX+epj/Ttjo7XRwlr3TFUUfW5GTRMvORpERPwiu7z2jl3DSVL4rXLmHt5y6LDPlUVreas2gumdcFbu0fLRG9Jg==
+ dependencies:
+ "@metamask/safe-event-emitter" "2.0.0"
+ "@solana/web3.js" "^1.70.1"
+ bind-decorator "^1.0.11"
+ bn.js "^5.1.1"
+ buffer "^6.0.3"
+ clsx "^1.1.0"
+ eth-block-tracker "6.1.0"
+ eth-json-rpc-filters "5.1.0"
+ eth-rpc-errors "4.0.2"
+ json-rpc-engine "6.1.0"
+ keccak "^3.0.1"
+ preact "^10.5.9"
+ qs "^6.10.3"
+ rxjs "^6.6.3"
+ sha.js "^2.4.11"
+ stream-browserify "^3.0.0"
+ util "^0.12.4"
+
+"@emotion/babel-plugin@^11.11.0":
+ version "11.11.0"
+ resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c"
+ integrity sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==
+ dependencies:
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/runtime" "^7.18.3"
+ "@emotion/hash" "^0.9.1"
+ "@emotion/memoize" "^0.8.1"
+ "@emotion/serialize" "^1.1.2"
+ babel-plugin-macros "^3.1.0"
+ convert-source-map "^1.5.0"
+ escape-string-regexp "^4.0.0"
+ find-root "^1.1.0"
+ source-map "^0.5.7"
+ stylis "4.2.0"
+
+"@emotion/cache@^11.11.0":
+ version "11.11.0"
+ resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff"
+ integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==
+ dependencies:
+ "@emotion/memoize" "^0.8.1"
+ "@emotion/sheet" "^1.2.2"
+ "@emotion/utils" "^1.2.1"
+ "@emotion/weak-memoize" "^0.3.1"
+ stylis "4.2.0"
+
+"@emotion/hash@^0.8.0":
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413"
+ integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==
+
+"@emotion/hash@^0.9.1":
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43"
+ integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==
+
+"@emotion/is-prop-valid@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc"
+ integrity sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==
+ dependencies:
+ "@emotion/memoize" "^0.8.1"
+
+"@emotion/memoize@^0.8.1":
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17"
+ integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==
+
+"@emotion/react@^11.11.0":
+ version "11.11.0"
+ resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.0.tgz#408196b7ef8729d8ad08fc061b03b046d1460e02"
+ integrity sha512-ZSK3ZJsNkwfjT3JpDAWJZlrGD81Z3ytNDsxw1LKq1o+xkmO5pnWfr6gmCC8gHEFf3nSSX/09YrG67jybNPxSUw==
+ dependencies:
+ "@babel/runtime" "^7.18.3"
+ "@emotion/babel-plugin" "^11.11.0"
+ "@emotion/cache" "^11.11.0"
+ "@emotion/serialize" "^1.1.2"
+ "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1"
+ "@emotion/utils" "^1.2.1"
+ "@emotion/weak-memoize" "^0.3.1"
+ hoist-non-react-statics "^3.3.1"
+
+"@emotion/serialize@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.2.tgz#017a6e4c9b8a803bd576ff3d52a0ea6fa5a62b51"
+ integrity sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==
+ dependencies:
+ "@emotion/hash" "^0.9.1"
+ "@emotion/memoize" "^0.8.1"
+ "@emotion/unitless" "^0.8.1"
+ "@emotion/utils" "^1.2.1"
+ csstype "^3.0.2"
+
+"@emotion/sheet@^1.2.2":
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec"
+ integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==
+
+"@emotion/styled@^11.11.0":
+ version "11.11.0"
+ resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.11.0.tgz#26b75e1b5a1b7a629d7c0a8b708fbf5a9cdce346"
+ integrity sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==
+ dependencies:
+ "@babel/runtime" "^7.18.3"
+ "@emotion/babel-plugin" "^11.11.0"
+ "@emotion/is-prop-valid" "^1.2.1"
+ "@emotion/serialize" "^1.1.2"
+ "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1"
+ "@emotion/utils" "^1.2.1"
+
+"@emotion/unitless@^0.8.1":
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3"
+ integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==
+
+"@emotion/use-insertion-effect-with-fallbacks@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963"
+ integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==
+
+"@emotion/utils@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4"
+ integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==
+
+"@emotion/weak-memoize@^0.3.1":
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6"
+ integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==
+
+"@eslint-community/eslint-utils@^4.2.0":
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
+ integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
+ dependencies:
+ eslint-visitor-keys "^3.3.0"
+
+"@eslint-community/regexpp@^4.4.0":
+ version "4.5.1"
+ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884"
+ integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==
+
+"@eslint/eslintrc@^2.0.3":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331"
+ integrity sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==
+ dependencies:
+ ajv "^6.12.4"
+ debug "^4.3.2"
+ espree "^9.5.2"
+ globals "^13.19.0"
+ ignore "^5.2.0"
+ import-fresh "^3.2.1"
+ js-yaml "^4.1.0"
+ minimatch "^3.1.2"
+ strip-json-comments "^3.1.1"
+
+"@eslint/js@8.41.0":
+ version "8.41.0"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.41.0.tgz#080321c3b68253522f7646b55b577dd99d2950b3"
+ integrity sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==
+
+"@ethersproject/abi@5.0.7":
+ version "5.0.7"
+ resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.7.tgz#79e52452bd3ca2956d0e1c964207a58ad1a0ee7b"
+ integrity sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw==
+ dependencies:
+ "@ethersproject/address" "^5.0.4"
+ "@ethersproject/bignumber" "^5.0.7"
+ "@ethersproject/bytes" "^5.0.4"
+ "@ethersproject/constants" "^5.0.4"
+ "@ethersproject/hash" "^5.0.4"
+ "@ethersproject/keccak256" "^5.0.3"
+ "@ethersproject/logger" "^5.0.5"
+ "@ethersproject/properties" "^5.0.3"
+ "@ethersproject/strings" "^5.0.4"
+
+"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449"
+ integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==
+ dependencies:
+ "@ethersproject/address" "^5.7.0"
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/constants" "^5.7.0"
+ "@ethersproject/hash" "^5.7.0"
+ "@ethersproject/keccak256" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/strings" "^5.7.0"
+
+"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef"
+ integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==
+ dependencies:
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/networks" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/transactions" "^5.7.0"
+ "@ethersproject/web" "^5.7.0"
+
+"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2"
+ integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==
+ dependencies:
+ "@ethersproject/abstract-provider" "^5.7.0"
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+
+"@ethersproject/address@5.7.0", "@ethersproject/address@^5.0.4", "@ethersproject/address@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37"
+ integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==
+ dependencies:
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/keccak256" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/rlp" "^5.7.0"
+
+"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c"
+ integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+
+"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b"
+ integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+
+"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2"
+ integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ bn.js "^5.2.1"
+
+"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d"
+ integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==
+ dependencies:
+ "@ethersproject/logger" "^5.7.0"
+
+"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.0.4", "@ethersproject/constants@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e"
+ integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==
+ dependencies:
+ "@ethersproject/bignumber" "^5.7.0"
+
+"@ethersproject/contracts@5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e"
+ integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==
+ dependencies:
+ "@ethersproject/abi" "^5.7.0"
+ "@ethersproject/abstract-provider" "^5.7.0"
+ "@ethersproject/abstract-signer" "^5.7.0"
+ "@ethersproject/address" "^5.7.0"
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/constants" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/transactions" "^5.7.0"
+
+"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.0.4", "@ethersproject/hash@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7"
+ integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==
+ dependencies:
+ "@ethersproject/abstract-signer" "^5.7.0"
+ "@ethersproject/address" "^5.7.0"
+ "@ethersproject/base64" "^5.7.0"
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/keccak256" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/strings" "^5.7.0"
+
+"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf"
+ integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==
+ dependencies:
+ "@ethersproject/abstract-signer" "^5.7.0"
+ "@ethersproject/basex" "^5.7.0"
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/pbkdf2" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/sha2" "^5.7.0"
+ "@ethersproject/signing-key" "^5.7.0"
+ "@ethersproject/strings" "^5.7.0"
+ "@ethersproject/transactions" "^5.7.0"
+ "@ethersproject/wordlists" "^5.7.0"
+
+"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360"
+ integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==
+ dependencies:
+ "@ethersproject/abstract-signer" "^5.7.0"
+ "@ethersproject/address" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/hdnode" "^5.7.0"
+ "@ethersproject/keccak256" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/pbkdf2" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/random" "^5.7.0"
+ "@ethersproject/strings" "^5.7.0"
+ "@ethersproject/transactions" "^5.7.0"
+ aes-js "3.0.0"
+ scrypt-js "3.0.1"
+
+"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.0.3", "@ethersproject/keccak256@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a"
+ integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ js-sha3 "0.8.0"
+
+"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892"
+ integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==
+
+"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0":
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6"
+ integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==
+ dependencies:
+ "@ethersproject/logger" "^5.7.0"
+
+"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102"
+ integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/sha2" "^5.7.0"
+
+"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30"
+ integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==
+ dependencies:
+ "@ethersproject/logger" "^5.7.0"
+
+"@ethersproject/providers@5.7.2":
+ version "5.7.2"
+ resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb"
+ integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==
+ dependencies:
+ "@ethersproject/abstract-provider" "^5.7.0"
+ "@ethersproject/abstract-signer" "^5.7.0"
+ "@ethersproject/address" "^5.7.0"
+ "@ethersproject/base64" "^5.7.0"
+ "@ethersproject/basex" "^5.7.0"
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/constants" "^5.7.0"
+ "@ethersproject/hash" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/networks" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/random" "^5.7.0"
+ "@ethersproject/rlp" "^5.7.0"
+ "@ethersproject/sha2" "^5.7.0"
+ "@ethersproject/strings" "^5.7.0"
+ "@ethersproject/transactions" "^5.7.0"
+ "@ethersproject/web" "^5.7.0"
+ bech32 "1.1.4"
+ ws "7.4.6"
+
+"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c"
+ integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+
+"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304"
+ integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+
+"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb"
+ integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ hash.js "1.1.7"
+
+"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3"
+ integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ bn.js "^5.2.1"
+ elliptic "6.5.4"
+ hash.js "1.1.7"
+
+"@ethersproject/solidity@5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8"
+ integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==
+ dependencies:
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/keccak256" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/sha2" "^5.7.0"
+ "@ethersproject/strings" "^5.7.0"
+
+"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.0.4", "@ethersproject/strings@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2"
+ integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/constants" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+
+"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b"
+ integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==
+ dependencies:
+ "@ethersproject/address" "^5.7.0"
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/constants" "^5.7.0"
+ "@ethersproject/keccak256" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/rlp" "^5.7.0"
+ "@ethersproject/signing-key" "^5.7.0"
+
+"@ethersproject/units@5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1"
+ integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==
+ dependencies:
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/constants" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+
+"@ethersproject/wallet@5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d"
+ integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==
+ dependencies:
+ "@ethersproject/abstract-provider" "^5.7.0"
+ "@ethersproject/abstract-signer" "^5.7.0"
+ "@ethersproject/address" "^5.7.0"
+ "@ethersproject/bignumber" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/hash" "^5.7.0"
+ "@ethersproject/hdnode" "^5.7.0"
+ "@ethersproject/json-wallets" "^5.7.0"
+ "@ethersproject/keccak256" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/random" "^5.7.0"
+ "@ethersproject/signing-key" "^5.7.0"
+ "@ethersproject/transactions" "^5.7.0"
+ "@ethersproject/wordlists" "^5.7.0"
+
+"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0":
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae"
+ integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==
+ dependencies:
+ "@ethersproject/base64" "^5.7.0"
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/strings" "^5.7.0"
+
+"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0":
+ version "5.7.0"
+ resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5"
+ integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==
+ dependencies:
+ "@ethersproject/bytes" "^5.7.0"
+ "@ethersproject/hash" "^5.7.0"
+ "@ethersproject/logger" "^5.7.0"
+ "@ethersproject/properties" "^5.7.0"
+ "@ethersproject/strings" "^5.7.0"
+
+"@firebase/analytics-compat@0.2.6":
+ version "0.2.6"
+ resolved "https://registry.yarnpkg.com/@firebase/analytics-compat/-/analytics-compat-0.2.6.tgz#50063978c42f13eb800e037e96ac4b17236841f4"
+ integrity sha512-4MqpVLFkGK7NJf/5wPEEP7ePBJatwYpyjgJ+wQHQGHfzaCDgntOnl9rL2vbVGGKCnRqWtZDIWhctB86UWXaX2Q==
+ dependencies:
+ "@firebase/analytics" "0.10.0"
+ "@firebase/analytics-types" "0.8.0"
+ "@firebase/component" "0.6.4"
+ "@firebase/util" "1.9.3"
+ tslib "^2.1.0"
+
+"@firebase/analytics-types@0.8.0":
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.8.0.tgz#551e744a29adbc07f557306530a2ec86add6d410"
+ integrity sha512-iRP+QKI2+oz3UAh4nPEq14CsEjrjD6a5+fuypjScisAh9kXKFvdJOZJDwk7kikLvWVLGEs9+kIUS4LPQV7VZVw==
+
+"@firebase/analytics@0.10.0":
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.10.0.tgz#9c6986acd573c6c6189ffb52d0fd63c775db26d7"
+ integrity sha512-Locv8gAqx0e+GX/0SI3dzmBY5e9kjVDtD+3zCFLJ0tH2hJwuCAiL+5WkHuxKj92rqQj/rvkBUCfA1ewlX2hehg==
+ dependencies:
+ "@firebase/component" "0.6.4"
+ "@firebase/installations" "0.6.4"
+ "@firebase/logger" "0.4.0"
+ "@firebase/util" "1.9.3"
+ tslib "^2.1.0"
+
+"@firebase/app-check-compat@0.3.7":
+ version "0.3.7"
+ resolved "https://registry.yarnpkg.com/@firebase/app-check-compat/-/app-check-compat-0.3.7.tgz#e150f61d653a0f2043a34dcb995616a717161839"
+ integrity sha512-cW682AxsyP1G+Z0/P7pO/WT2CzYlNxoNe5QejVarW2o5ZxeWSSPAiVEwpEpQR/bUlUmdeWThYTMvBWaopdBsqw==
+ dependencies:
+ "@firebase/app-check" "0.8.0"
+ "@firebase/app-check-types" "0.5.0"
+ "@firebase/component" "0.6.4"
+ "@firebase/logger" "0.4.0"
+ "@firebase/util" "1.9.3"
+ tslib "^2.1.0"
+
+"@firebase/app-check-interop-types@0.3.0":
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.0.tgz#b27ea1397cb80427f729e4bbf3a562f2052955c4"
+ integrity sha512-xAxHPZPIgFXnI+vb4sbBjZcde7ZluzPPaSK7Lx3/nmuVk4TjZvnL8ONnkd4ERQKL8WePQySU+pRcWkh8rDf5Sg==
+
+"@firebase/app-check-types@0.5.0":
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/@firebase/app-check-types/-/app-check-types-0.5.0.tgz#1b02826213d7ce6a1cf773c329b46ea1c67064f4"
+ integrity sha512-uwSUj32Mlubybw7tedRzR24RP8M8JUVR3NPiMk3/Z4bCmgEKTlQBwMXrehDAZ2wF+TsBq0SN1c6ema71U/JPyQ==
+
+"@firebase/app-check@0.8.0":
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/@firebase/app-check/-/app-check-0.8.0.tgz#b531ec40900af9c3cf1ec63de9094a0ddd733d6a"
+ integrity sha512-dRDnhkcaC2FspMiRK/Vbp+PfsOAEP6ZElGm9iGFJ9fDqHoPs0HOPn7dwpJ51lCFi1+2/7n5pRPGhqF/F03I97g==
+ dependencies:
+ "@firebase/component" "0.6.4"
+ "@firebase/logger" "0.4.0"
+ "@firebase/util" "1.9.3"
+ tslib "^2.1.0"
+
+"@firebase/app-compat@0.2.11":
+ version "0.2.11"
+ resolved "https://registry.yarnpkg.com/@firebase/app-compat/-/app-compat-0.2.11.tgz#6f9864a5663ba6da3042880f91641bc435addbce"
+ integrity sha512-IzjLh3Z9F4gPo+Ft7lNVxeKlYfKI6fseUmiLaySidcx/Sdro1vOzoBMOr+5OVVpVVMSib9BZ3QtBKZkPZk+Ucw==
+ dependencies:
+ "@firebase/app" "0.9.11"
+ "@firebase/component" "0.6.4"
+ "@firebase/logger" "0.4.0"
+ "@firebase/util" "1.9.3"
+ tslib "^2.1.0"
+
+"@firebase/app-types@0.9.0":
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.9.0.tgz#35b5c568341e9e263b29b3d2ba0e9cfc9ec7f01e"
+ integrity sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==
+
+"@firebase/app@0.9.11":
+ version "0.9.11"
+ resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.9.11.tgz#1892645682dd0b1695f4eb79ef21c0ebcc31c6f1"
+ integrity sha512-b6OVXqn2qHXTASLstlu2aW8loHgB7gWcjVWbNKi6pZYZ9Tu3VE+xJuD8NH1br9gDh4ueVnrMBisfBTeZ0Hvlvg==
+ dependencies:
+ "@firebase/component" "0.6.4"
+ "@firebase/logger" "0.4.0"
+ "@firebase/util" "1.9.3"
+ idb "7.1.1"
+ tslib "^2.1.0"
+
+"@firebase/auth-compat@0.4.2":
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/@firebase/auth-compat/-/auth-compat-0.4.2.tgz#cb65edc2fbd5f72fff32310409f2fd702b5145e7"
+ integrity sha512-Q30e77DWXFmXEt5dg5JbqEDpjw9y3/PcP9LslDPR7fARmAOTIY9MM6HXzm9KC+dlrKH/+p6l8g9ifJiam9mc4A==
+ dependencies:
+ "@firebase/auth" "0.23.2"
+ "@firebase/auth-types" "0.12.0"
+ "@firebase/component" "0.6.4"
+ "@firebase/util" "1.9.3"
+ node-fetch "2.6.7"
+ tslib "^2.1.0"
+
+"@firebase/auth-interop-types@0.2.1":
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz#78884f24fa539e34a06c03612c75f222fcc33742"
+ integrity sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg==
+
+"@firebase/auth-types@0.12.0":
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.12.0.tgz#f28e1b68ac3b208ad02a15854c585be6da3e8e79"
+ integrity sha512-pPwaZt+SPOshK8xNoiQlK5XIrS97kFYc3Rc7xmy373QsOJ9MmqXxLaYssP5Kcds4wd2qK//amx/c+A8O2fVeZA==
+
+"@firebase/auth@0.23.2":
+ version "0.23.2"
+ resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.23.2.tgz#9e6d8dd550a28053c1825fb98c7dc9b37119254d"
+ integrity sha512-dM9iJ0R6tI1JczuGSxXmQbXAgtYie0K4WvKcuyuSTCu9V8eEDiz4tfa1sO3txsfvwg7nOY3AjoCyMYEdqZ8hdg==
+ dependencies:
+ "@firebase/component" "0.6.4"
+ "@firebase/logger" "0.4.0"
+ "@firebase/util" "1.9.3"
+ node-fetch "2.6.7"
+ tslib "^2.1.0"
+
+"@firebase/component@0.6.4":
+ version "0.6.4"
+ resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.6.4.tgz#8981a6818bd730a7554aa5e0516ffc9b1ae3f33d"
+ integrity sha512-rLMyrXuO9jcAUCaQXCMjCMUsWrba5fzHlNK24xz5j2W6A/SRmK8mZJ/hn7V0fViLbxC0lPMtrK1eYzk6Fg03jA==
+ dependencies:
+ "@firebase/util" "1.9.3"
+ tslib "^2.1.0"
+
+"@firebase/database-compat@0.3.4":
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/@firebase/database-compat/-/database-compat-0.3.4.tgz#4e57932f7a5ba761cd5ac946ab6b6ab3f660522c"
+ integrity sha512-kuAW+l+sLMUKBThnvxvUZ+Q1ZrF/vFJ58iUY9kAcbX48U03nVzIF6Tmkf0p3WVQwMqiXguSgtOPIB6ZCeF+5Gg==
+ dependencies:
+ "@firebase/component" "0.6.4"
+ "@firebase/database" "0.14.4"
+ "@firebase/database-types" "0.10.4"
+ "@firebase/logger" "0.4.0"
+ "@firebase/util" "1.9.3"
+ tslib "^2.1.0"
+
+"@firebase/database-types@0.10.4":
+ version "0.10.4"
+ resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.10.4.tgz#47ba81113512dab637abace61cfb65f63d645ca7"
+ integrity sha512-dPySn0vJ/89ZeBac70T+2tWWPiJXWbmRygYv0smT5TfE3hDrQ09eKMF3Y+vMlTdrMWq7mUdYW5REWPSGH4kAZQ==
+ dependencies:
+ "@firebase/app-types" "0.9.0"
+ "@firebase/util" "1.9.3"
+
+"@firebase/database@0.14.4":
+ version "0.14.4"
+ resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.14.4.tgz#9e7435a16a540ddfdeb5d99d45618e6ede179aa6"
+ integrity sha512-+Ea/IKGwh42jwdjCyzTmeZeLM3oy1h0mFPsTy6OqCWzcu/KFqRAr5Tt1HRCOBlNOdbh84JPZC47WLU18n2VbxQ==
+ dependencies:
+ "@firebase/auth-interop-types" "0.2.1"
+ "@firebase/component" "0.6.4"
+ "@firebase/logger" "0.4.0"
+ "@firebase/util" "1.9.3"
+ faye-websocket "0.11.4"
+ tslib "^2.1.0"
+
+"@firebase/firestore-compat@0.3.10":
+ version "0.3.10"
+ resolved "https://registry.yarnpkg.com/@firebase/firestore-compat/-/firestore-compat-0.3.10.tgz#a79330d02d863810a196b60bd33d1bfcb7f78c14"
+ integrity sha512-mPxRwgi8riB0+EXVzwwOBssoBMCR1NtOz8uE0+vPlEzm3qCCDeyWK9Tqu8LBPs2uopWk6GJhy5esDHt0dnUd6A==
+ dependencies:
+ "@firebase/component" "0.6.4"
+ "@firebase/firestore" "3.12.1"
+ "@firebase/firestore-types" "2.5.1"
+ "@firebase/util" "1.9.3"
+ tslib "^2.1.0"
+
+"@firebase/firestore-types@2.5.1":
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-2.5.1.tgz#464b2ee057956599ca34de50eae957c30fdbabb7"
+ integrity sha512-xG0CA6EMfYo8YeUxC8FeDzf6W3FX1cLlcAGBYV6Cku12sZRI81oWcu61RSKM66K6kUENP+78Qm8mvroBcm1whw==
+
+"@firebase/firestore@3.12.1":
+ version "3.12.1"
+ resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-3.12.1.tgz#39eeb357e2d522f4e7f7d837cdaee7cd32cffc68"
+ integrity sha512-TgJup6AIAT9/u7MxdCeES/I96kJx7DLBTokOlW4FiiSCeOzyss9BYBrh1tkkXNIpFn9mUsvT44foZvFsOKp14Q==
+ dependencies:
+ "@firebase/component" "0.6.4"
+ "@firebase/logger" "0.4.0"
+ "@firebase/util" "1.9.3"
+ "@firebase/webchannel-wrapper" "0.10.1"
+ "@grpc/grpc-js" "~1.7.0"
+ "@grpc/proto-loader" "^0.6.13"
+ node-fetch "2.6.7"
+ tslib "^2.1.0"
+
+"@firebase/functions-compat@0.3.5":
+ version "0.3.5"
+ resolved "https://registry.yarnpkg.com/@firebase/functions-compat/-/functions-compat-0.3.5.tgz#7a532d3a9764c6d5fbc1ec5541a989a704326647"
+ integrity sha512-uD4jwgwVqdWf6uc3NRKF8cSZ0JwGqSlyhPgackyUPe+GAtnERpS4+Vr66g0b3Gge0ezG4iyHo/EXW/Hjx7QhHw==
+ dependencies:
+ "@firebase/component" "0.6.4"
+ "@firebase/functions" "0.10.0"
+ "@firebase/functions-types" "0.6.0"
+ "@firebase/util" "1.9.3"
+ tslib "^2.1.0"
+
+"@firebase/functions-types@0.6.0":
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.6.0.tgz#ccd7000dc6fc668f5acb4e6a6a042a877a555ef2"
+ integrity sha512-hfEw5VJtgWXIRf92ImLkgENqpL6IWpYaXVYiRkFY1jJ9+6tIhWM7IzzwbevwIIud/jaxKVdRzD7QBWfPmkwCYw==
+
+"@firebase/functions@0.10.0":
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.10.0.tgz#c630ddf12cdf941c25bc8d554e30c3226cd560f6"
+ integrity sha512-2U+fMNxTYhtwSpkkR6WbBcuNMOVaI7MaH3cZ6UAeNfj7AgEwHwMIFLPpC13YNZhno219F0lfxzTAA0N62ndWzA==
+ dependencies:
+ "@firebase/app-check-interop-types" "0.3.0"
+ "@firebase/auth-interop-types" "0.2.1"
+ "@firebase/component" "0.6.4"
+ "@firebase/messaging-interop-types" "0.2.0"
+ "@firebase/util" "1.9.3"
+ node-fetch "2.6.7"
+ tslib "^2.1.0"
+
+"@firebase/installations-compat@0.2.4":
+ version "0.2.4"
+ resolved "https://registry.yarnpkg.com/@firebase/installations-compat/-/installations-compat-0.2.4.tgz#b5557c897b4cd3635a59887a8bf69c3731aaa952"
+ integrity sha512-LI9dYjp0aT9Njkn9U4JRrDqQ6KXeAmFbRC0E7jI7+hxl5YmRWysq5qgQl22hcWpTk+cm3es66d/apoDU/A9n6Q==
+ dependencies:
+ "@firebase/component" "0.6.4"
+ "@firebase/installations" "0.6.4"
+ "@firebase/installations-types" "0.5.0"
+ "@firebase/util" "1.9.3"
+ tslib "^2.1.0"
+
+"@firebase/installations-types@0.5.0":
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/@firebase/installations-types/-/installations-types-0.5.0.tgz#2adad64755cd33648519b573ec7ec30f21fb5354"
+ integrity sha512-9DP+RGfzoI2jH7gY4SlzqvZ+hr7gYzPODrbzVD82Y12kScZ6ZpRg/i3j6rleto8vTFC8n6Len4560FnV1w2IRg==
+
+"@firebase/installations@0.6.4":
+ version "0.6.4"
+ resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.6.4.tgz#20382e33e6062ac5eff4bede8e468ed4c367609e"
+ integrity sha512-u5y88rtsp7NYkCHC3ElbFBrPtieUybZluXyzl7+4BsIz4sqb4vSAuwHEUgCgCeaQhvsnxDEU6icly8U9zsJigA==
+ dependencies:
+ "@firebase/component" "0.6.4"
+ "@firebase/util" "1.9.3"
+ idb "7.0.1"
+ tslib "^2.1.0"
+
+"@firebase/logger@0.4.0":
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.4.0.tgz#15ecc03c452525f9d47318ad9491b81d1810f113"
+ integrity sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==
+ dependencies:
+ tslib "^2.1.0"
+
+"@firebase/messaging-compat@0.2.4":
+ version "0.2.4"
+ resolved "https://registry.yarnpkg.com/@firebase/messaging-compat/-/messaging-compat-0.2.4.tgz#323ca48deef77065b4fcda3cfd662c4337dffcfd"
+ integrity sha512-lyFjeUhIsPRYDPNIkYX1LcZMpoVbBWXX4rPl7c/rqc7G+EUea7IEtSt4MxTvh6fDfPuzLn7+FZADfscC+tNMfg==
+ dependencies:
+ "@firebase/component" "0.6.4"
+ "@firebase/messaging" "0.12.4"
+ "@firebase/util" "1.9.3"
+ tslib "^2.1.0"
+
+"@firebase/messaging-interop-types@0.2.0":
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.0.tgz#6056f8904a696bf0f7fdcf5f2ca8f008e8f6b064"
+ integrity sha512-ujA8dcRuVeBixGR9CtegfpU4YmZf3Lt7QYkcj693FFannwNuZgfAYaTmbJ40dtjB81SAu6tbFPL9YLNT15KmOQ==
+
+"@firebase/messaging@0.12.4":
+ version "0.12.4"
+ resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.12.4.tgz#ccb49df5ab97d5650c9cf5b8c77ddc34daafcfe0"
+ integrity sha512-6JLZct6zUaex4g7HI3QbzeUrg9xcnmDAPTWpkoMpd/GoSVWH98zDoWXMGrcvHeCAIsLpFMe4MPoZkJbrPhaASw==
+ dependencies:
+ "@firebase/component" "0.6.4"
+ "@firebase/installations" "0.6.4"
+ "@firebase/messaging-interop-types" "0.2.0"
+ "@firebase/util" "1.9.3"
+ idb "7.0.1"
+ tslib "^2.1.0"
+
+"@firebase/performance-compat@0.2.4":
+ version "0.2.4"
+ resolved "https://registry.yarnpkg.com/@firebase/performance-compat/-/performance-compat-0.2.4.tgz#95cbf32057b5d9f0c75d804bc50e6ed3ba486274"
+ integrity sha512-nnHUb8uP9G8islzcld/k6Bg5RhX62VpbAb/Anj7IXs/hp32Eb2LqFPZK4sy3pKkBUO5wcrlRWQa6wKOxqlUqsg==
+ dependencies:
+ "@firebase/component" "0.6.4"
+ "@firebase/logger" "0.4.0"
+ "@firebase/performance" "0.6.4"
+ "@firebase/performance-types" "0.2.0"
+ "@firebase/util" "1.9.3"
+ tslib "^2.1.0"
+
+"@firebase/performance-types@0.2.0":
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.2.0.tgz#400685f7a3455970817136d9b48ce07a4b9562ff"
+ integrity sha512-kYrbr8e/CYr1KLrLYZZt2noNnf+pRwDq2KK9Au9jHrBMnb0/C9X9yWSXmZkFt4UIdsQknBq8uBB7fsybZdOBTA==
+
+"@firebase/performance@0.6.4":
+ version "0.6.4"
+ resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.6.4.tgz#0ad766bfcfab4f386f4fe0bef43bbcf505015069"
+ integrity sha512-HfTn/bd8mfy/61vEqaBelNiNnvAbUtME2S25A67Nb34zVuCSCRIX4SseXY6zBnOFj3oLisaEqhVcJmVPAej67g==
+ dependencies:
+ "@firebase/component" "0.6.4"
+ "@firebase/installations" "0.6.4"
+ "@firebase/logger" "0.4.0"
+ "@firebase/util" "1.9.3"
+ tslib "^2.1.0"
+
+"@firebase/remote-config-compat@0.2.4":
+ version "0.2.4"
+ resolved "https://registry.yarnpkg.com/@firebase/remote-config-compat/-/remote-config-compat-0.2.4.tgz#1f494c81a6c9560b1f9ca1b4fbd4bbbe47cf4776"
+ integrity sha512-FKiki53jZirrDFkBHglB3C07j5wBpitAaj8kLME6g8Mx+aq7u9P7qfmuSRytiOItADhWUj7O1JIv7n9q87SuwA==
+ dependencies:
+ "@firebase/component" "0.6.4"
+ "@firebase/logger" "0.4.0"
+ "@firebase/remote-config" "0.4.4"
+ "@firebase/remote-config-types" "0.3.0"
+ "@firebase/util" "1.9.3"
+ tslib "^2.1.0"
+
+"@firebase/remote-config-types@0.3.0":
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/@firebase/remote-config-types/-/remote-config-types-0.3.0.tgz#689900dcdb3e5c059e8499b29db393e4e51314b4"
+ integrity sha512-RtEH4vdcbXZuZWRZbIRmQVBNsE7VDQpet2qFvq6vwKLBIQRQR5Kh58M4ok3A3US8Sr3rubYnaGqZSurCwI8uMA==
+
+"@firebase/remote-config@0.4.4":
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.4.4.tgz#6a496117054de58744bc9f382d2a6d1e14060c65"
+ integrity sha512-x1ioTHGX8ZwDSTOVp8PBLv2/wfwKzb4pxi0gFezS5GCJwbLlloUH4YYZHHS83IPxnua8b6l0IXUaWd0RgbWwzQ==
+ dependencies:
+ "@firebase/component" "0.6.4"
+ "@firebase/installations" "0.6.4"
+ "@firebase/logger" "0.4.0"
+ "@firebase/util" "1.9.3"
+ tslib "^2.1.0"
+
+"@firebase/storage-compat@0.3.2":
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/@firebase/storage-compat/-/storage-compat-0.3.2.tgz#51a97170fd652a516f729f82b97af369e5a2f8d7"
+ integrity sha512-wvsXlLa9DVOMQJckbDNhXKKxRNNewyUhhbXev3t8kSgoCotd1v3MmqhKKz93ePhDnhHnDs7bYHy+Qa8dRY6BXw==
+ dependencies:
+ "@firebase/component" "0.6.4"
+ "@firebase/storage" "0.11.2"
+ "@firebase/storage-types" "0.8.0"
+ "@firebase/util" "1.9.3"
+ tslib "^2.1.0"
+
+"@firebase/storage-types@0.8.0":
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.8.0.tgz#f1e40a5361d59240b6e84fac7fbbbb622bfaf707"
+ integrity sha512-isRHcGrTs9kITJC0AVehHfpraWFui39MPaU7Eo8QfWlqW7YPymBmRgjDrlOgFdURh6Cdeg07zmkLP5tzTKRSpg==
+
+"@firebase/storage@0.11.2":
+ version "0.11.2"
+ resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.11.2.tgz#c5e0316543fe1c4026b8e3910f85ad73f5b77571"
+ integrity sha512-CtvoFaBI4hGXlXbaCHf8humajkbXhs39Nbh6MbNxtwJiCqxPy9iH3D3CCfXAvP0QvAAwmJUTK3+z9a++Kc4nkA==
+ dependencies:
+ "@firebase/component" "0.6.4"
+ "@firebase/util" "1.9.3"
+ node-fetch "2.6.7"
+ tslib "^2.1.0"
+
+"@firebase/util@1.9.3":
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/@firebase/util/-/util-1.9.3.tgz#45458dd5cd02d90e55c656e84adf6f3decf4b7ed"
+ integrity sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA==
+ dependencies:
+ tslib "^2.1.0"
+
+"@firebase/webchannel-wrapper@0.10.1":
+ version "0.10.1"
+ resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.10.1.tgz#60bb2aaf129f9e00621f8d698722ddba6ee1f8ac"
+ integrity sha512-Dq5rYfEpdeel0bLVN+nfD1VWmzCkK+pJbSjIawGE+RY4+NIJqhbUDDQjvV0NUK84fMfwxvtFoCtEe70HfZjFcw==
+
+"@grpc/grpc-js@~1.7.0":
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.7.3.tgz#f2ea79f65e31622d7f86d4b4c9ae38f13ccab99a"
+ integrity sha512-H9l79u4kJ2PVSxUNA08HMYAnUBLj9v6KjYQ7SQ71hOZcEXhShE/y5iQCesP8+6/Ik/7i2O0a10bPquIcYfufog==
+ dependencies:
+ "@grpc/proto-loader" "^0.7.0"
+ "@types/node" ">=12.12.47"
+
+"@grpc/proto-loader@^0.6.13":
+ version "0.6.13"
+ resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.13.tgz#008f989b72a40c60c96cd4088522f09b05ac66bc"
+ integrity sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g==
+ dependencies:
+ "@types/long" "^4.0.1"
+ lodash.camelcase "^4.3.0"
+ long "^4.0.0"
+ protobufjs "^6.11.3"
+ yargs "^16.2.0"
+
+"@grpc/proto-loader@^0.7.0":
+ version "0.7.7"
+ resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.7.tgz#d33677a77eea8407f7c66e2abd97589b60eb4b21"
+ integrity sha512-1TIeXOi8TuSCQprPItwoMymZXxWT0CPxUhkrkeCUH+D8U7QDwQ6b7SUz2MaLuWM2llT+J/TVFLmQI5KtML3BhQ==
+ dependencies:
+ "@types/long" "^4.0.1"
+ lodash.camelcase "^4.3.0"
+ long "^4.0.0"
+ protobufjs "^7.0.0"
+ yargs "^17.7.2"
+
+"@heroicons/react@^2.0.18":
+ version "2.0.18"
+ resolved "https://registry.yarnpkg.com/@heroicons/react/-/react-2.0.18.tgz#f80301907c243df03c7e9fd76c0286e95361f7c1"
+ integrity sha512-7TyMjRrZZMBPa+/5Y8lN0iyvUU/01PeMGX2+RE7cQWpEUIcb4QotzUObFkJDejj/HUH4qjP/eQ0gzzKs2f+6Yw==
+
+"@humanwhocodes/config-array@^0.11.8":
+ version "0.11.8"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9"
+ integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==
+ dependencies:
+ "@humanwhocodes/object-schema" "^1.2.1"
+ debug "^4.1.1"
+ minimatch "^3.0.5"
+
+"@humanwhocodes/module-importer@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
+ integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
+
+"@humanwhocodes/object-schema@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
+ integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
+
+"@json-rpc-tools/provider@^1.5.5":
+ version "1.7.6"
+ resolved "https://registry.yarnpkg.com/@json-rpc-tools/provider/-/provider-1.7.6.tgz#8a17c34c493fa892632e278fd9331104e8491ec6"
+ integrity sha512-z7D3xvJ33UfCGv77n40lbzOYjZKVM3k2+5cV7xS8G6SCvKTzMkhkUYuD/qzQUNT4cG/lv0e9mRToweEEVLVVmA==
+ dependencies:
+ "@json-rpc-tools/utils" "^1.7.6"
+ axios "^0.21.0"
+ safe-json-utils "^1.1.1"
+ ws "^7.4.0"
+
+"@json-rpc-tools/types@^1.7.6":
+ version "1.7.6"
+ resolved "https://registry.yarnpkg.com/@json-rpc-tools/types/-/types-1.7.6.tgz#5abd5fde01364a130c46093b501715bcce5bdc0e"
+ integrity sha512-nDSqmyRNEqEK9TZHtM15uNnDljczhCUdBmRhpNZ95bIPKEDQ+nTDmGMFd2lLin3upc5h2VVVd9tkTDdbXUhDIQ==
+ dependencies:
+ keyvaluestorage-interface "^1.0.0"
+
+"@json-rpc-tools/utils@^1.7.6":
+ version "1.7.6"
+ resolved "https://registry.yarnpkg.com/@json-rpc-tools/utils/-/utils-1.7.6.tgz#67f04987dbaa2e7adb6adff1575367b75a9a9ba1"
+ integrity sha512-HjA8x/U/Q78HRRe19yh8HVKoZ+Iaoo3YZjakJYxR+rw52NHo6jM+VE9b8+7ygkCFXl/EHID5wh/MkXaE/jGyYw==
+ dependencies:
+ "@json-rpc-tools/types" "^1.7.6"
+ "@pedrouid/environment" "^1.0.1"
+
+"@ledgerhq/connect-kit-loader@^1.0.1":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@ledgerhq/connect-kit-loader/-/connect-kit-loader-1.0.2.tgz#8554e16943f86cc2a5f6348a14dfe6e5bd0c572a"
+ integrity sha512-TQ21IjcZOw/scqypaVFY3jHVqI7X7Hta3qN/us6FvTol3AY06UmrhhXGww0E9xHmAbdX241ddwXEiMBSQZFr9g==
+
+"@lit-labs/ssr-dom-shim@^1.0.0", "@lit-labs/ssr-dom-shim@^1.1.0":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.1.tgz#64df34e2f12e68e78ac57e571d25ec07fa460ca9"
+ integrity sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==
+
+"@lit/reactive-element@^1.3.0", "@lit/reactive-element@^1.6.0":
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-1.6.1.tgz#0d958b6d479d0e3db5fc1132ecc4fa84be3f0b93"
+ integrity sha512-va15kYZr7KZNNPZdxONGQzpUr+4sxVu7V/VG7a8mRfPPXUyhEYj5RzXCQmGrlP3tAh0L3HHm5AjBMFYRqlM9SA==
+ dependencies:
+ "@lit-labs/ssr-dom-shim" "^1.0.0"
+
+"@metamask/safe-event-emitter@2.0.0", "@metamask/safe-event-emitter@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz#af577b477c683fad17c619a78208cede06f9605c"
+ integrity sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==
+
+"@metamask/utils@^3.0.1":
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-3.6.0.tgz#b218b969a05ca7a8093b5d1670f6625061de707d"
+ integrity sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ==
+ dependencies:
+ "@types/debug" "^4.1.7"
+ debug "^4.3.4"
+ semver "^7.3.8"
+ superstruct "^1.0.3"
+
+"@motionone/animation@^10.15.1":
+ version "10.15.1"
+ resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.15.1.tgz#4a85596c31cbc5100ae8eb8b34c459fb0ccf6807"
+ integrity sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==
+ dependencies:
+ "@motionone/easing" "^10.15.1"
+ "@motionone/types" "^10.15.1"
+ "@motionone/utils" "^10.15.1"
+ tslib "^2.3.1"
+
+"@motionone/dom@^10.15.5", "@motionone/dom@^10.16.2":
+ version "10.16.2"
+ resolved "https://registry.yarnpkg.com/@motionone/dom/-/dom-10.16.2.tgz#0c44df8ee3d1cfc50ee11d27050b27824355a61a"
+ integrity sha512-bnuHdNbge1FutZXv+k7xub9oPWcF0hsu8y1HTH/qg6av58YI0VufZ3ngfC7p2xhMJMnoh0LXFma2EGTgPeCkeg==
+ dependencies:
+ "@motionone/animation" "^10.15.1"
+ "@motionone/generators" "^10.15.1"
+ "@motionone/types" "^10.15.1"
+ "@motionone/utils" "^10.15.1"
+ hey-listen "^1.0.8"
+ tslib "^2.3.1"
+
+"@motionone/easing@^10.15.1":
+ version "10.15.1"
+ resolved "https://registry.yarnpkg.com/@motionone/easing/-/easing-10.15.1.tgz#95cf3adaef34da6deebb83940d8143ede3deb693"
+ integrity sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==
+ dependencies:
+ "@motionone/utils" "^10.15.1"
+ tslib "^2.3.1"
+
+"@motionone/generators@^10.15.1":
+ version "10.15.1"
+ resolved "https://registry.yarnpkg.com/@motionone/generators/-/generators-10.15.1.tgz#dc6abb11139d1bafe758a41c134d4c753a9b871c"
+ integrity sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==
+ dependencies:
+ "@motionone/types" "^10.15.1"
+ "@motionone/utils" "^10.15.1"
+ tslib "^2.3.1"
+
+"@motionone/svelte@^10.15.5":
+ version "10.16.2"
+ resolved "https://registry.yarnpkg.com/@motionone/svelte/-/svelte-10.16.2.tgz#0b37c3b12927814d31d24941d1ca0ff49981b444"
+ integrity sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q==
+ dependencies:
+ "@motionone/dom" "^10.16.2"
+ tslib "^2.3.1"
+
+"@motionone/types@^10.15.1":
+ version "10.15.1"
+ resolved "https://registry.yarnpkg.com/@motionone/types/-/types-10.15.1.tgz#89441b54285012795cbba8612cbaa0fa420db3eb"
+ integrity sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==
+
+"@motionone/utils@^10.15.1":
+ version "10.15.1"
+ resolved "https://registry.yarnpkg.com/@motionone/utils/-/utils-10.15.1.tgz#6b5f51bde75be88b5411e084310299050368a438"
+ integrity sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==
+ dependencies:
+ "@motionone/types" "^10.15.1"
+ hey-listen "^1.0.8"
+ tslib "^2.3.1"
+
+"@motionone/vue@^10.15.5":
+ version "10.16.2"
+ resolved "https://registry.yarnpkg.com/@motionone/vue/-/vue-10.16.2.tgz#faf13afc27620a2df870c71c58a04ee8de8dea65"
+ integrity sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw==
+ dependencies:
+ "@motionone/dom" "^10.16.2"
+ tslib "^2.3.1"
+
+"@mui/base@5.0.0-beta.3":
+ version "5.0.0-beta.3"
+ resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.3.tgz#8e2a1fe7559a097845c70459c190d6231708fa36"
+ integrity sha512-ErOMoGNpgf6BF5W+jgXDiRlXJnpSeg8XSRonuY5UCCMHIlOWtKDtt/LS3qDAbFFGb7tV/y6EBddbcMeexx+zHw==
+ dependencies:
+ "@babel/runtime" "^7.21.0"
+ "@emotion/is-prop-valid" "^1.2.1"
+ "@mui/types" "^7.2.4"
+ "@mui/utils" "^5.13.1"
+ "@popperjs/core" "^2.11.7"
+ clsx "^1.2.1"
+ prop-types "^15.8.1"
+ react-is "^18.2.0"
+
+"@mui/core-downloads-tracker@^5.13.3":
+ version "5.13.3"
+ resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.13.3.tgz#861131835b927a37d4633e0f14bcdacd30295b4f"
+ integrity sha512-w4//nRIi9fiMow/MmhkForOezd8nc229EpSZZ5DzwpJNOmAXwypFTapOUVAGTUQiTJyeZXUNbQqYuUIrIs2nbg==
+
+"@mui/material@^5.13.3":
+ version "5.13.3"
+ resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.13.3.tgz#60e3a26d70155d9c7360f795a262c397dfa3a42f"
+ integrity sha512-10pek+Bz+PZ4rjUf3KTKfXWjPMUqU1nSnRPf4DAXABhsjzelGGfGW/EICgrLRrttYplTJZhoponWALezAge8ug==
+ dependencies:
+ "@babel/runtime" "^7.21.0"
+ "@mui/base" "5.0.0-beta.3"
+ "@mui/core-downloads-tracker" "^5.13.3"
+ "@mui/system" "^5.13.2"
+ "@mui/types" "^7.2.4"
+ "@mui/utils" "^5.13.1"
+ "@types/react-transition-group" "^4.4.6"
+ clsx "^1.2.1"
+ csstype "^3.1.2"
+ prop-types "^15.8.1"
+ react-is "^18.2.0"
+ react-transition-group "^4.4.5"
+
+"@mui/private-theming@^5.13.1":
+ version "5.13.1"
+ resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.13.1.tgz#c3e9a0b44f9c5a51b92cfcfb660536060cb61ed7"
+ integrity sha512-HW4npLUD9BAkVppOUZHeO1FOKUJWAwbpy0VQoGe3McUYTlck1HezGHQCfBQ5S/Nszi7EViqiimECVl9xi+/WjQ==
+ dependencies:
+ "@babel/runtime" "^7.21.0"
+ "@mui/utils" "^5.13.1"
+ prop-types "^15.8.1"
+
+"@mui/styled-engine@^5.13.2":
+ version "5.13.2"
+ resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.13.2.tgz#c87bd61c0ab8086d34828b6defe97c02bcd642ef"
+ integrity sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw==
+ dependencies:
+ "@babel/runtime" "^7.21.0"
+ "@emotion/cache" "^11.11.0"
+ csstype "^3.1.2"
+ prop-types "^15.8.1"
+
+"@mui/system@^5.13.2":
+ version "5.13.2"
+ resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.13.2.tgz#c9aa821049fc75d8ade1c0646dc4d2b67605b8fc"
+ integrity sha512-TPyWmRJPt0JPVxacZISI4o070xEJ7ftxpVtu6LWuYVOUOINlhoGOclam4iV8PDT3EMQEHuUrwU49po34UdWLlw==
+ dependencies:
+ "@babel/runtime" "^7.21.0"
+ "@mui/private-theming" "^5.13.1"
+ "@mui/styled-engine" "^5.13.2"
+ "@mui/types" "^7.2.4"
+ "@mui/utils" "^5.13.1"
+ clsx "^1.2.1"
+ csstype "^3.1.2"
+ prop-types "^15.8.1"
+
+"@mui/types@^7.2.4":
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.4.tgz#b6fade19323b754c5c6de679a38f068fd50b9328"
+ integrity sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==
+
+"@mui/utils@^5.13.1":
+ version "5.13.1"
+ resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.13.1.tgz#86199e46014215f95da046a5ec803f4a39c96eee"
+ integrity sha512-6lXdWwmlUbEU2jUI8blw38Kt+3ly7xkmV9ljzY4Q20WhsJMWiNry9CX8M+TaP/HbtuyR8XKsdMgQW7h7MM3n3A==
+ dependencies:
+ "@babel/runtime" "^7.21.0"
+ "@types/prop-types" "^15.7.5"
+ "@types/react-is" "^18.2.0"
+ prop-types "^15.8.1"
+ react-is "^18.2.0"
+
+"@next/env@13.4.4":
+ version "13.4.4"
+ resolved "https://registry.yarnpkg.com/@next/env/-/env-13.4.4.tgz#46b620f6bef97fe67a1566bf570dbb791d40c50a"
+ integrity sha512-q/y7VZj/9YpgzDe64Zi6rY1xPizx80JjlU2BTevlajtaE3w1LqweH1gGgxou2N7hdFosXHjGrI4OUvtFXXhGLg==
+
+"@next/eslint-plugin-next@13.4.4":
+ version "13.4.4"
+ resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-13.4.4.tgz#0df2f699e61b97c65035f87f54795f799e12fead"
+ integrity sha512-5jnh7q6I15efnjR/rR+/TGTc9hn53g3JTbEjAMjmeQiExKqEUgIXqrHI5zlTNlNyzCPkBB860/ctxXheZaF2Vw==
+ dependencies:
+ glob "7.1.7"
+
+"@next/swc-darwin-arm64@13.4.4":
+ version "13.4.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.4.tgz#8c14083c2478e2a9a8d140cce5900f76b75667ff"
+ integrity sha512-xfjgXvp4KalNUKZMHmsFxr1Ug+aGmmO6NWP0uoh4G3WFqP/mJ1xxfww0gMOeMeSq/Jyr5k7DvoZ2Pv+XOITTtw==
+
+"@next/swc-darwin-x64@13.4.4":
+ version "13.4.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.4.tgz#5fe01c65c80fcb833c8789fd70f074ea99893864"
+ integrity sha512-ZY9Ti1hkIwJsxGus3nlubIkvYyB0gNOYxKrfsOrLEqD0I2iCX8D7w8v6QQZ2H+dDl6UT29oeEUdDUNGk4UEpfg==
+
+"@next/swc-linux-arm64-gnu@13.4.4":
+ version "13.4.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.4.tgz#f2e071f38e8a6cdadf507cc5d28956f73360d064"
+ integrity sha512-+KZnDeMShYkpkqAvGCEDeqYTRADJXc6SY1jWXz+Uo6qWQO/Jd9CoyhTJwRSxvQA16MoYzvILkGaDqirkRNctyA==
+
+"@next/swc-linux-arm64-musl@13.4.4":
+ version "13.4.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.4.tgz#23bf75c544e54562bc24ec1be036e4bd9cf89e2c"
+ integrity sha512-evC1twrny2XDT4uOftoubZvW3EG0zs0ZxMwEtu/dDGVRO5n5pT48S8qqEIBGBUZYu/Xx4zzpOkIxx1vpWdE+9A==
+
+"@next/swc-linux-x64-gnu@13.4.4":
+ version "13.4.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.4.tgz#bd42590950a01957952206f89cf5622e7c9e4196"
+ integrity sha512-PX706XcCHr2FfkyhP2lpf+pX/tUvq6/ke7JYnnr0ykNdEMo+sb7cC/o91gnURh4sPYSiZJhsF2gbIqg9rciOHQ==
+
+"@next/swc-linux-x64-musl@13.4.4":
+ version "13.4.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.4.tgz#907d81feb1abec3daec0ecb61e3f39b56e7aeafe"
+ integrity sha512-TKUUx3Ftd95JlHV6XagEnqpT204Y+IsEa3awaYIjayn0MOGjgKZMZibqarK3B1FsMSPaieJf2FEAcu9z0yT5aA==
+
+"@next/swc-win32-arm64-msvc@13.4.4":
+ version "13.4.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.4.tgz#1d754d2bb10bdf9907c0acc83711438697c3b5fe"
+ integrity sha512-FP8AadgSq4+HPtim7WBkCMGbhr5vh9FePXiWx9+YOdjwdQocwoCK5ZVC3OW8oh3TWth6iJ0AXJ/yQ1q1cwSZ3A==
+
+"@next/swc-win32-ia32-msvc@13.4.4":
+ version "13.4.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.4.tgz#77b2c7f7534b675d46e46301869e08d504d23956"
+ integrity sha512-3WekVmtuA2MCdcAOrgrI+PuFiFURtSyyrN1I3UPtS0ckR2HtLqyqmS334Eulf15g1/bdwMteePdK363X/Y9JMg==
+
+"@next/swc-win32-x64-msvc@13.4.4":
+ version "13.4.4"
+ resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.4.tgz#faab69239f8a9d0be7cd473e65f5a07735ef7b0e"
+ integrity sha512-AHRITu/CrlQ+qzoqQtEMfaTu7GHaQ6bziQln/pVWpOYC1wU+Mq6VQQFlsDtMCnDztPZtppAXdvvbNS7pcfRzlw==
+
+"@noble/curves@1.0.0", "@noble/curves@^1.0.0", "@noble/curves@~1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.0.0.tgz#e40be8c7daf088aaf291887cbc73f43464a92932"
+ integrity sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==
+ dependencies:
+ "@noble/hashes" "1.3.0"
+
+"@noble/hashes@1.3.0", "@noble/hashes@^1.3.0", "@noble/hashes@~1.3.0":
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.0.tgz#085fd70f6d7d9d109671090ccae1d3bec62554a1"
+ integrity sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==
+
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
+"@pedrouid/environment@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@pedrouid/environment/-/environment-1.0.1.tgz#858f0f8a057340e0b250398b75ead77d6f4342ec"
+ integrity sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug==
+
+"@pkgr/utils@^2.3.1":
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.4.1.tgz#adf291d0357834c410ce80af16e711b56c7b1cd3"
+ integrity sha512-JOqwkgFEyi+OROIyq7l4Jy28h/WwhDnG/cPkXG2Z1iFbubB6jsHW1NDvmyOzTBxHr3yg68YGirmh1JUgMqa+9w==
+ dependencies:
+ cross-spawn "^7.0.3"
+ fast-glob "^3.2.12"
+ is-glob "^4.0.3"
+ open "^9.1.0"
+ picocolors "^1.0.0"
+ tslib "^2.5.0"
+
+"@popperjs/core@^2.11.7":
+ version "2.11.8"
+ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
+ integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
+
+"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
+ integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==
+
+"@protobufjs/base64@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735"
+ integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==
+
+"@protobufjs/codegen@^2.0.4":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb"
+ integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==
+
+"@protobufjs/eventemitter@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70"
+ integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==
+
+"@protobufjs/fetch@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45"
+ integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==
+ dependencies:
+ "@protobufjs/aspromise" "^1.1.1"
+ "@protobufjs/inquire" "^1.1.0"
+
+"@protobufjs/float@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1"
+ integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==
+
+"@protobufjs/inquire@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089"
+ integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==
+
+"@protobufjs/path@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d"
+ integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==
+
+"@protobufjs/pool@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54"
+ integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==
+
+"@protobufjs/utf8@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
+ integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==
+
+"@rainbow-me/rainbowkit@^1.0.0":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@rainbow-me/rainbowkit/-/rainbowkit-1.0.1.tgz#c852383a5a16fb6452e2533992aa2cd6d562a992"
+ integrity sha512-P+2lgHaN5X84K1e+MARUydyhYRS+nStN4H470QloBBWP5UsidHZpSJGd4qi0WFtfR6zBff96N6kmsfJo7PjFhQ==
+ dependencies:
+ "@vanilla-extract/css" "1.9.1"
+ "@vanilla-extract/dynamic" "2.0.2"
+ "@vanilla-extract/sprinkles" "1.5.0"
+ clsx "1.1.1"
+ qrcode "1.5.0"
+ react-remove-scroll "2.5.4"
+
+"@rushstack/eslint-patch@^1.1.3":
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.3.0.tgz#f5635b36fc0dad96ef1e542a302cd914230188c0"
+ integrity sha512-IthPJsJR85GhOkp3Hvp8zFOPK5ynKn6STyHa/WZpioK7E1aYDiBzpqQPrngc14DszIUkIrdd3k9Iu0XSzlP/1w==
+
+"@safe-global/safe-apps-provider@^0.15.2":
+ version "0.15.2"
+ resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-provider/-/safe-apps-provider-0.15.2.tgz#fa5c30140134e72bb969da76b80a16c545323e3a"
+ integrity sha512-BaoGAuY7h6jLBL7P+M6b7hd+1QfTv8uMyNF3udhiNUwA0XwfzH2ePQB13IEV3Mn7wdcIMEEUDS5kHbtAsj60qQ==
+ dependencies:
+ "@safe-global/safe-apps-sdk" "7.9.0"
+ events "^3.3.0"
+
+"@safe-global/safe-apps-sdk@7.9.0":
+ version "7.9.0"
+ resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-sdk/-/safe-apps-sdk-7.9.0.tgz#0c79a7760470bfdaf4cce9aa5bceef56898c7037"
+ integrity sha512-S2EI+JL8ocSgE3uGNaDZCzKmwfhtxXZFDUP76vN0FeaY35itFMyi8F0Vhxu0XnZm3yLzJE3tp5px6GhuQFLU6w==
+ dependencies:
+ "@safe-global/safe-gateway-typescript-sdk" "^3.5.3"
+ ethers "^5.7.2"
+
+"@safe-global/safe-apps-sdk@^7.9.0":
+ version "7.11.0"
+ resolved "https://registry.yarnpkg.com/@safe-global/safe-apps-sdk/-/safe-apps-sdk-7.11.0.tgz#2cbc164fb70141cdf4d3331ff222cd98a2529316"
+ integrity sha512-RDamzPM1Lhhiiz0O+Dn6FkFqIh47jmZX+HCV/BBnBBOSKfBJE//IGD3+02zMgojXHTikQAburdPes9qmH1SA1A==
+ dependencies:
+ "@safe-global/safe-gateway-typescript-sdk" "^3.5.3"
+ ethers "^5.7.2"
+
+"@safe-global/safe-gateway-typescript-sdk@^3.5.3":
+ version "3.7.3"
+ resolved "https://registry.yarnpkg.com/@safe-global/safe-gateway-typescript-sdk/-/safe-gateway-typescript-sdk-3.7.3.tgz#68ec7d82711e2d0f82ce2e577b1df67ba8da2bed"
+ integrity sha512-O6JCgXNZWG0Vv8FnOEjKfcbsP0WxGvoPJk5ufqUrsyBlHup16It6oaLnn+25nXFLBZOHI1bz8429JlqAc2t2hg==
+ dependencies:
+ cross-fetch "^3.1.5"
+
+"@scure/base@~1.1.0":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938"
+ integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==
+
+"@scure/bip32@1.3.0":
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.0.tgz#6c8d980ef3f290987736acd0ee2e0f0d50068d87"
+ integrity sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==
+ dependencies:
+ "@noble/curves" "~1.0.0"
+ "@noble/hashes" "~1.3.0"
+ "@scure/base" "~1.1.0"
+
+"@scure/bip39@1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.0.tgz#a207e2ef96de354de7d0002292ba1503538fc77b"
+ integrity sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==
+ dependencies:
+ "@noble/hashes" "~1.3.0"
+ "@scure/base" "~1.1.0"
+
+"@sindresorhus/is@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
+ integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
+
+"@sindresorhus/is@^4.0.0":
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f"
+ integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==
+
+"@solana/buffer-layout@^4.0.0":
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15"
+ integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==
+ dependencies:
+ buffer "~6.0.3"
+
+"@solana/web3.js@^1.70.1":
+ version "1.77.2"
+ resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.77.2.tgz#4b4d71f07efb9aca1f7ab3ae8746c2e79389fe39"
+ integrity sha512-pKu9S21NGAi6Nsayz2KEdhqOlPUJIr3L911bgQvPg2Dbk/U4gJsk41XGdxyfsfnwKPEI/KbitcByterst4VQ3g==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ "@noble/curves" "^1.0.0"
+ "@noble/hashes" "^1.3.0"
+ "@solana/buffer-layout" "^4.0.0"
+ agentkeepalive "^4.2.1"
+ bigint-buffer "^1.1.5"
+ bn.js "^5.0.0"
+ borsh "^0.7.0"
+ bs58 "^4.0.1"
+ buffer "6.0.3"
+ fast-stable-stringify "^1.0.0"
+ jayson "^3.4.4"
+ node-fetch "^2.6.7"
+ rpc-websockets "^7.5.1"
+ superstruct "^0.14.2"
+
+"@stablelib/aead@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@stablelib/aead/-/aead-1.0.1.tgz#c4b1106df9c23d1b867eb9b276d8f42d5fc4c0c3"
+ integrity sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==
+
+"@stablelib/binary@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@stablelib/binary/-/binary-1.0.1.tgz#c5900b94368baf00f811da5bdb1610963dfddf7f"
+ integrity sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==
+ dependencies:
+ "@stablelib/int" "^1.0.1"
+
+"@stablelib/bytes@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@stablelib/bytes/-/bytes-1.0.1.tgz#0f4aa7b03df3080b878c7dea927d01f42d6a20d8"
+ integrity sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==
+
+"@stablelib/chacha20poly1305@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz#de6b18e283a9cb9b7530d8767f99cde1fec4c2ee"
+ integrity sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==
+ dependencies:
+ "@stablelib/aead" "^1.0.1"
+ "@stablelib/binary" "^1.0.1"
+ "@stablelib/chacha" "^1.0.1"
+ "@stablelib/constant-time" "^1.0.1"
+ "@stablelib/poly1305" "^1.0.1"
+ "@stablelib/wipe" "^1.0.1"
+
+"@stablelib/chacha@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@stablelib/chacha/-/chacha-1.0.1.tgz#deccfac95083e30600c3f92803a3a1a4fa761371"
+ integrity sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==
+ dependencies:
+ "@stablelib/binary" "^1.0.1"
+ "@stablelib/wipe" "^1.0.1"
+
+"@stablelib/constant-time@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@stablelib/constant-time/-/constant-time-1.0.1.tgz#bde361465e1cf7b9753061b77e376b0ca4c77e35"
+ integrity sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==
+
+"@stablelib/ed25519@^1.0.2":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@stablelib/ed25519/-/ed25519-1.0.3.tgz#f8fdeb6f77114897c887bb6a3138d659d3f35996"
+ integrity sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==
+ dependencies:
+ "@stablelib/random" "^1.0.2"
+ "@stablelib/sha512" "^1.0.1"
+ "@stablelib/wipe" "^1.0.1"
+
+"@stablelib/hash@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@stablelib/hash/-/hash-1.0.1.tgz#3c944403ff2239fad8ebb9015e33e98444058bc5"
+ integrity sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==
+
+"@stablelib/hkdf@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@stablelib/hkdf/-/hkdf-1.0.1.tgz#b4efd47fd56fb43c6a13e8775a54b354f028d98d"
+ integrity sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==
+ dependencies:
+ "@stablelib/hash" "^1.0.1"
+ "@stablelib/hmac" "^1.0.1"
+ "@stablelib/wipe" "^1.0.1"
+
+"@stablelib/hmac@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@stablelib/hmac/-/hmac-1.0.1.tgz#3d4c1b8cf194cb05d28155f0eed8a299620a07ec"
+ integrity sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==
+ dependencies:
+ "@stablelib/constant-time" "^1.0.1"
+ "@stablelib/hash" "^1.0.1"
+ "@stablelib/wipe" "^1.0.1"
+
+"@stablelib/int@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@stablelib/int/-/int-1.0.1.tgz#75928cc25d59d73d75ae361f02128588c15fd008"
+ integrity sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==
+
+"@stablelib/keyagreement@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz#4612efb0a30989deb437cd352cee637ca41fc50f"
+ integrity sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==
+ dependencies:
+ "@stablelib/bytes" "^1.0.1"
+
+"@stablelib/poly1305@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@stablelib/poly1305/-/poly1305-1.0.1.tgz#93bfb836c9384685d33d70080718deae4ddef1dc"
+ integrity sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==
+ dependencies:
+ "@stablelib/constant-time" "^1.0.1"
+ "@stablelib/wipe" "^1.0.1"
+
+"@stablelib/random@^1.0.1", "@stablelib/random@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.2.tgz#2dece393636489bf7e19c51229dd7900eddf742c"
+ integrity sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==
+ dependencies:
+ "@stablelib/binary" "^1.0.1"
+ "@stablelib/wipe" "^1.0.1"
+
+"@stablelib/sha256@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@stablelib/sha256/-/sha256-1.0.1.tgz#77b6675b67f9b0ea081d2e31bda4866297a3ae4f"
+ integrity sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==
+ dependencies:
+ "@stablelib/binary" "^1.0.1"
+ "@stablelib/hash" "^1.0.1"
+ "@stablelib/wipe" "^1.0.1"
+
+"@stablelib/sha512@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@stablelib/sha512/-/sha512-1.0.1.tgz#6da700c901c2c0ceacbd3ae122a38ac57c72145f"
+ integrity sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==
+ dependencies:
+ "@stablelib/binary" "^1.0.1"
+ "@stablelib/hash" "^1.0.1"
+ "@stablelib/wipe" "^1.0.1"
+
+"@stablelib/wipe@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36"
+ integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==
+
+"@stablelib/x25519@^1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@stablelib/x25519/-/x25519-1.0.3.tgz#13c8174f774ea9f3e5e42213cbf9fc68a3c7b7fd"
+ integrity sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==
+ dependencies:
+ "@stablelib/keyagreement" "^1.0.1"
+ "@stablelib/random" "^1.0.2"
+ "@stablelib/wipe" "^1.0.1"
+
+"@swc/helpers@0.5.1":
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.1.tgz#e9031491aa3f26bfcc974a67f48bd456c8a5357a"
+ integrity sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==
+ dependencies:
+ tslib "^2.4.0"
+
+"@szmarczak/http-timer@^1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
+ integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==
+ dependencies:
+ defer-to-connect "^1.0.1"
+
+"@szmarczak/http-timer@^4.0.5":
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807"
+ integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==
+ dependencies:
+ defer-to-connect "^2.0.0"
+
+"@tanstack/query-core@4.29.11":
+ version "4.29.11"
+ resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-4.29.11.tgz#fa338f7d6897c6be5de6d8dabd603d9b78ee48c7"
+ integrity sha512-8C+hF6SFAb/TlFZyS9FItgNwrw4PMa7YeX+KQYe2ZAiEz6uzg6yIr+QBzPkUwZ/L0bXvGd1sufTm3wotoz+GwQ==
+
+"@tanstack/query-persist-client-core@4.29.11":
+ version "4.29.11"
+ resolved "https://registry.yarnpkg.com/@tanstack/query-persist-client-core/-/query-persist-client-core-4.29.11.tgz#96b4b83bead480eb37e024a59fd59bfd84b0545e"
+ integrity sha512-CSmMZchr+446r79NJ/pjD2yfjqNqFV7k8BnqOq4yTZvXsaQLEIn3tsaU45IsPgs4N7g9OBfPUPDdapSQvck2WQ==
+ dependencies:
+ "@tanstack/query-core" "4.29.11"
+
+"@tanstack/query-sync-storage-persister@^4.27.1":
+ version "4.29.11"
+ resolved "https://registry.yarnpkg.com/@tanstack/query-sync-storage-persister/-/query-sync-storage-persister-4.29.11.tgz#577ead9d08588a420a24ff0a8b77de427a2e6ca8"
+ integrity sha512-JP9U3m9YPkUelcE9+7D6fAEsNEp2ysKsH6qrd0WJtqsuhe5Zwr407NxaQ5uB2ow/MmhPOm8bxzMZw00Y7RagoQ==
+ dependencies:
+ "@tanstack/query-persist-client-core" "4.29.11"
+
+"@tanstack/react-query-persist-client@^4.28.0":
+ version "4.29.12"
+ resolved "https://registry.yarnpkg.com/@tanstack/react-query-persist-client/-/react-query-persist-client-4.29.12.tgz#a3d3dc8dc4318689b275f7329db3619b710401e1"
+ integrity sha512-rh6zZJB+3j8lr+YsEkVadnqmUELmqNFZQzGGsHS5col/YOjYsMe9ppqaUjIMJ2aXnFXye50sbe4KxHhSGoaNVw==
+ dependencies:
+ "@tanstack/query-persist-client-core" "4.29.11"
+
+"@tanstack/react-query@^4.28.0":
+ version "4.29.12"
+ resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-4.29.12.tgz#de111cf1d6c389b86acacfaf972302914cfa1208"
+ integrity sha512-zhcN6+zF6cxprxhTHQajHGlvxgK8npnp9uLe9yaWhGc6sYcPWXzyO4raL4HomUzQOPzu3jLvkriJQ7BOrDM8vA==
+ dependencies:
+ "@tanstack/query-core" "4.29.11"
+ use-sync-external-store "^1.2.0"
+
+"@types/bn.js@*", "@types/bn.js@^5.1.0":
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682"
+ integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==
+ dependencies:
+ "@types/node" "*"
+
+"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5":
+ version "4.11.6"
+ resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c"
+ integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==
+ dependencies:
+ "@types/node" "*"
+
+"@types/cacheable-request@^6.0.1":
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183"
+ integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==
+ dependencies:
+ "@types/http-cache-semantics" "*"
+ "@types/keyv" "^3.1.4"
+ "@types/node" "*"
+ "@types/responselike" "^1.0.0"
+
+"@types/connect@^3.4.33":
+ version "3.4.35"
+ resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1"
+ integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==
+ dependencies:
+ "@types/node" "*"
+
+"@types/country-data@^0.0.0":
+ version "0.0.0"
+ 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.5", "@types/debug@^4.1.7":
+ version "4.1.8"
+ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.8.tgz#cef723a5d0a90990313faec2d1e22aee5eecb317"
+ integrity sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==
+ dependencies:
+ "@types/ms" "*"
+
+"@types/elliptic@^6.4.9":
+ version "6.4.14"
+ resolved "https://registry.yarnpkg.com/@types/elliptic/-/elliptic-6.4.14.tgz#7bbaad60567a588c1f08b10893453e6b9b4de48e"
+ integrity sha512-z4OBcDAU0GVwDTuwJzQCiL6188QvZMkvoERgcVjq0/mPM8jCfdwZ3x5zQEVoL9WCAru3aG5wl3Z5Ww5wBWn7ZQ==
+ dependencies:
+ "@types/bn.js" "*"
+
+"@types/ethereumjs-util@^5.2.0":
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/@types/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#f49fe8114789ec0871721392c09318c3eb56671b"
+ integrity sha512-qwQgQqXXTRv2h2AlJef+tMEszLFkCB9dWnrJYIdAwqjubERXEc/geB+S3apRw0yQyTVnsBf8r6BhlrE8vx+3WQ==
+ dependencies:
+ "@types/bn.js" "*"
+ "@types/node" "*"
+
+"@types/google-libphonenumber@^7.4.23":
+ version "7.4.23"
+ resolved "https://registry.yarnpkg.com/@types/google-libphonenumber/-/google-libphonenumber-7.4.23.tgz#c44c9125d45f042943694d605fd8d8d796cafc3b"
+ integrity sha512-C3ydakLTQa8HxtYf9ge4q6uT9krDX8smSIxmmW3oACFi5g5vv6T068PRExF7UyWbWpuYiDG8Nm24q2X5XhcZWw==
+
+"@types/http-cache-semantics@*":
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812"
+ integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==
+
+"@types/json5@^0.0.29":
+ version "0.0.29"
+ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
+ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
+
+"@types/keyv@^3.1.4":
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6"
+ integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==
+ dependencies:
+ "@types/node" "*"
+
+"@types/long@^4.0.1":
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a"
+ integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==
+
+"@types/ms@*":
+ version "0.7.31"
+ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197"
+ integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==
+
+"@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@^20.2.1":
+ version "20.2.5"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.2.5.tgz#26d295f3570323b2837d322180dfbf1ba156fefb"
+ integrity sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==
+
+"@types/node@^10.12.18":
+ version "10.17.60"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b"
+ integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==
+
+"@types/node@^12.12.54", "@types/node@^12.12.6":
+ version "12.20.55"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240"
+ integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==
+
+"@types/parse-json@^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
+ integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
+
+"@types/pbkdf2@^3.0.0":
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1"
+ integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==
+ dependencies:
+ "@types/node" "*"
+
+"@types/prop-types@*", "@types/prop-types@^15.7.5":
+ version "15.7.5"
+ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf"
+ integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==
+
+"@types/react-dom@^18.2.4":
+ version "18.2.4"
+ resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.4.tgz#13f25bfbf4e404d26f62ac6e406591451acba9e0"
+ integrity sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==
+ dependencies:
+ "@types/react" "*"
+
+"@types/react-is@^18.2.0":
+ version "18.2.0"
+ resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-18.2.0.tgz#2f5137853a46017b3d56447940fb3eb92bbf24a5"
+ integrity sha512-1vz2yObaQkLL7YFe/pme2cpvDsCwI1WXIfL+5eLz0MI9gFG24Re16RzUsI8t9XZn9ZWvgLNDrJBmrqXJO7GNQQ==
+ dependencies:
+ "@types/react" "*"
+
+"@types/react-transition-group@^4.4.6":
+ version "4.4.6"
+ resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.6.tgz#18187bcda5281f8e10dfc48f0943e2fdf4f75e2e"
+ integrity sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==
+ dependencies:
+ "@types/react" "*"
+
+"@types/react@*", "@types/react@^18.2.6":
+ version "18.2.7"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.7.tgz#dfb4518042a3117a045b8c222316f83414a783b3"
+ integrity sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw==
+ dependencies:
+ "@types/prop-types" "*"
+ "@types/scheduler" "*"
+ csstype "^3.0.2"
+
+"@types/responselike@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29"
+ integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==
+ dependencies:
+ "@types/node" "*"
+
+"@types/scheduler@*":
+ version "0.16.3"
+ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5"
+ integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==
+
+"@types/secp256k1@^4.0.1":
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c"
+ integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==
+ dependencies:
+ "@types/node" "*"
+
+"@types/trusted-types@^2.0.2":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.3.tgz#a136f83b0758698df454e328759dbd3d44555311"
+ integrity sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==
+
+"@types/utf8@^2.1.6":
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/@types/utf8/-/utf8-2.1.6.tgz#430cabb71a42d0a3613cce5621324fe4f5a25753"
+ integrity sha512-pRs2gYF5yoKYrgSaira0DJqVg2tFuF+Qjp838xS7K+mJyY2jJzjsrl6y17GbIa4uMRogMbxs+ghNCvKg6XyNrA==
+
+"@types/ws@^7.4.4":
+ version "7.4.7"
+ resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702"
+ integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==
+ dependencies:
+ "@types/node" "*"
+
+"@typescript-eslint/parser@^5.42.0":
+ version "5.59.8"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.8.tgz#60cbb00671d86cf746044ab797900b1448188567"
+ integrity sha512-AnR19RjJcpjoeGojmwZtCwBX/RidqDZtzcbG3xHrmz0aHHoOcbWnpDllenRDmDvsV0RQ6+tbb09/kyc+UT9Orw==
+ dependencies:
+ "@typescript-eslint/scope-manager" "5.59.8"
+ "@typescript-eslint/types" "5.59.8"
+ "@typescript-eslint/typescript-estree" "5.59.8"
+ debug "^4.3.4"
+
+"@typescript-eslint/scope-manager@5.59.8":
+ version "5.59.8"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.8.tgz#ff4ad4fec6433647b817c4a7d4b4165d18ea2fa8"
+ integrity sha512-/w08ndCYI8gxGf+9zKf1vtx/16y8MHrZs5/tnjHhMLNSixuNcJavSX4wAiPf4aS5x41Es9YPCn44MIe4cxIlig==
+ dependencies:
+ "@typescript-eslint/types" "5.59.8"
+ "@typescript-eslint/visitor-keys" "5.59.8"
+
+"@typescript-eslint/types@5.59.8":
+ version "5.59.8"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.8.tgz#212e54414733618f5d0fd50b2da2717f630aebf8"
+ integrity sha512-+uWuOhBTj/L6awoWIg0BlWy0u9TyFpCHrAuQ5bNfxDaZ1Ppb3mx6tUigc74LHcbHpOHuOTOJrBoAnhdHdaea1w==
+
+"@typescript-eslint/typescript-estree@5.59.8":
+ version "5.59.8"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.8.tgz#801a7b1766481629481b3b0878148bd7a1f345d7"
+ integrity sha512-Jy/lPSDJGNow14vYu6IrW790p7HIf/SOV1Bb6lZ7NUkLc2iB2Z9elESmsaUtLw8kVqogSbtLH9tut5GCX1RLDg==
+ dependencies:
+ "@typescript-eslint/types" "5.59.8"
+ "@typescript-eslint/visitor-keys" "5.59.8"
+ debug "^4.3.4"
+ globby "^11.1.0"
+ is-glob "^4.0.3"
+ semver "^7.3.7"
+ tsutils "^3.21.0"
+
+"@typescript-eslint/visitor-keys@5.59.8":
+ version "5.59.8"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.8.tgz#aa6a7ef862add919401470c09e1609392ef3cc40"
+ integrity sha512-pJhi2ms0x0xgloT7xYabil3SGGlojNNKjK/q6dB3Ey0uJLMjK2UDGJvHieiyJVW/7C3KI+Z4Q3pEHkm4ejA+xQ==
+ dependencies:
+ "@typescript-eslint/types" "5.59.8"
+ eslint-visitor-keys "^3.3.0"
+
+"@vanilla-extract/css@1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@vanilla-extract/css/-/css-1.9.1.tgz#337b79faa5f8f98915a90c3fe3c30b54be746c09"
+ integrity sha512-pu2SFiff5jRhPwvGoj8cM5l/qIyLvigOmy22ss5DGjwV5pJYezRjDLxWumi2luIwioMWvh9EozCjyfH8nq+7fQ==
+ dependencies:
+ "@emotion/hash" "^0.8.0"
+ "@vanilla-extract/private" "^1.0.3"
+ ahocorasick "1.0.2"
+ chalk "^4.1.1"
+ css-what "^5.0.1"
+ cssesc "^3.0.0"
+ csstype "^3.0.7"
+ deep-object-diff "^1.1.0"
+ deepmerge "^4.2.2"
+ media-query-parser "^2.0.2"
+ outdent "^0.8.0"
+
+"@vanilla-extract/dynamic@2.0.2":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@vanilla-extract/dynamic/-/dynamic-2.0.2.tgz#13a3e461964c8029a52e6b6b631009ca6a8b27f5"
+ integrity sha512-U4nKaEQ8Kuz+exXEr51DUpyaOuzo24/S/k1YbDPQR06cYcNjQqvwFRnwWtZ+9ImocqM1wTKtzrdUgSTtLGIwAg==
+ dependencies:
+ "@vanilla-extract/private" "^1.0.3"
+
+"@vanilla-extract/private@^1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@vanilla-extract/private/-/private-1.0.3.tgz#7ec72bc2ff6fe51f9d650f962e8d1989b073690f"
+ integrity sha512-17kVyLq3ePTKOkveHxXuIJZtGYs+cSoev7BlP+Lf4916qfDhk/HBjvlYDe8egrea7LNPHKwSZJK/bzZC+Q6AwQ==
+
+"@vanilla-extract/sprinkles@1.5.0":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/@vanilla-extract/sprinkles/-/sprinkles-1.5.0.tgz#c921183ae518bb484299c2dc81f2acefd91c3dbe"
+ integrity sha512-W58f2Rzz5lLmk0jbhgStVlZl5wEiPB1Ur3fRvUaBM+MrifZ3qskmFq/CiH//fEYeG5Dh9vF1qRviMMH46cX9Nw==
+
+"@wagmi/chains@0.3.1":
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/@wagmi/chains/-/chains-0.3.1.tgz#5d8e8ef1bcd8637c9f3ead8626595b12a01c35e4"
+ integrity sha512-NN5qziBLFeXnx0+3ywdiKKXUSW4H73Wc1jRrygl9GKXVPawU0GBMudwXUfV7VOu6E9vmG7Arj0pVsEwq63b2Ew==
+
+"@wagmi/chains@^0.2.22":
+ version "0.2.25"
+ resolved "https://registry.yarnpkg.com/@wagmi/chains/-/chains-0.2.25.tgz#44614a07399bcebb6651899d8116475e4a87e875"
+ integrity sha512-Gah0bgR+14navwxi7xTL2oFB8YgK4qoBPye1b8ucccIwF3Z8Zg1u2gVTDFAyPT4lyB+ZVqwYKs3Y/IkFNG5O4Q==
+
+"@wagmi/connectors@2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@wagmi/connectors/-/connectors-2.0.0.tgz#558a7bc8b2d5f08a2c10fd14b3126adad12d1717"
+ integrity sha512-W7GFLdLaJiqISm65pwoe0DePLjL3klyugCwQwlunFXHNHvYSsoWkzDjb1H5XJwx9g+dTVNwJVg8TE7WfaUdilg==
+ dependencies:
+ "@coinbase/wallet-sdk" "^3.6.6"
+ "@ledgerhq/connect-kit-loader" "^1.0.1"
+ "@safe-global/safe-apps-provider" "^0.15.2"
+ "@safe-global/safe-apps-sdk" "^7.9.0"
+ "@walletconnect/ethereum-provider" "2.7.4"
+ "@walletconnect/legacy-provider" "^2.0.0"
+ "@web3modal/standalone" "^2.4.1"
+ abitype "0.8.1"
+ eventemitter3 "^4.0.7"
+
+"@wagmi/core@1.0.8":
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/@wagmi/core/-/core-1.0.8.tgz#c123507b0104dc1ccbc88664d0c7aae74e67e002"
+ integrity sha512-0NknHYf7KivPK9PXzfWP2zxNeHG9kDZEW3NXRQ7Wyd4l6LiX3pBMtHnb1grlqhzrirApqOwhzViyRaznl3IwCg==
+ dependencies:
+ "@wagmi/chains" "0.3.1"
+ "@wagmi/connectors" "2.0.0"
+ abitype "0.8.2"
+ eventemitter3 "^4.0.7"
+ zustand "^4.3.1"
+
+"@walletconnect/core@2.7.4":
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.7.4.tgz#1471215ca8cc08ae4719ca1bb6d45dd1b49dea3a"
+ integrity sha512-nDJJZALZJI8l8JvjwZE4UmUzDzQBnTTJlQa/rc5MoGYtir0hfsQEl3sPkPcXbkkW5q+cHiynXsDcgM4740fmNQ==
+ dependencies:
+ "@walletconnect/heartbeat" "1.2.1"
+ "@walletconnect/jsonrpc-provider" "^1.0.12"
+ "@walletconnect/jsonrpc-utils" "^1.0.7"
+ "@walletconnect/jsonrpc-ws-connection" "^1.0.11"
+ "@walletconnect/keyvaluestorage" "^1.0.2"
+ "@walletconnect/logger" "^2.0.1"
+ "@walletconnect/relay-api" "^1.0.9"
+ "@walletconnect/relay-auth" "^1.0.4"
+ "@walletconnect/safe-json" "^1.0.2"
+ "@walletconnect/time" "^1.0.2"
+ "@walletconnect/types" "2.7.4"
+ "@walletconnect/utils" "2.7.4"
+ events "^3.3.0"
+ lodash.isequal "4.5.0"
+ uint8arrays "^3.1.0"
+
+"@walletconnect/crypto@^1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@walletconnect/crypto/-/crypto-1.0.3.tgz#7b8dd4d7e2884fe3543c7c07aea425eef5ef9dd4"
+ integrity sha512-+2jdORD7XQs76I2Odgr3wwrtyuLUXD/kprNVsjWRhhhdO9Mt6WqVzOPu0/t7OHSmgal8k7SoBQzUc5hu/8zL/g==
+ dependencies:
+ "@walletconnect/encoding" "^1.0.2"
+ "@walletconnect/environment" "^1.0.1"
+ "@walletconnect/randombytes" "^1.0.3"
+ aes-js "^3.1.2"
+ hash.js "^1.1.7"
+ tslib "1.14.1"
+
+"@walletconnect/encoding@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@walletconnect/encoding/-/encoding-1.0.2.tgz#cb3942ad038d6a6bf01158f66773062dd25724da"
+ integrity sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag==
+ dependencies:
+ is-typedarray "1.0.0"
+ tslib "1.14.1"
+ typedarray-to-buffer "3.1.5"
+
+"@walletconnect/environment@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@walletconnect/environment/-/environment-1.0.1.tgz#1d7f82f0009ab821a2ba5ad5e5a7b8ae3b214cd7"
+ integrity sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==
+ dependencies:
+ tslib "1.14.1"
+
+"@walletconnect/ethereum-provider@2.7.4":
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.7.4.tgz#777ad9a6229f88f766a986bb5cffaa3ff1575c0b"
+ integrity sha512-R5hcByY9zIsvyTHFUS+3xqtzs2REezED4tZFyXk0snJjWlnlL2EdeHaCjr5n+SIZDin4CMj1EAFC0ZrM4KoA4Q==
+ dependencies:
+ "@walletconnect/jsonrpc-http-connection" "^1.0.4"
+ "@walletconnect/jsonrpc-provider" "^1.0.11"
+ "@walletconnect/jsonrpc-types" "^1.0.2"
+ "@walletconnect/jsonrpc-utils" "^1.0.7"
+ "@walletconnect/sign-client" "2.7.4"
+ "@walletconnect/types" "2.7.4"
+ "@walletconnect/universal-provider" "2.7.4"
+ "@walletconnect/utils" "2.7.4"
+ events "^3.3.0"
+
+"@walletconnect/events@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@walletconnect/events/-/events-1.0.1.tgz#2b5f9c7202019e229d7ccae1369a9e86bda7816c"
+ integrity sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==
+ dependencies:
+ keyvaluestorage-interface "^1.0.0"
+ tslib "1.14.1"
+
+"@walletconnect/heartbeat@1.2.1":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@walletconnect/heartbeat/-/heartbeat-1.2.1.tgz#afaa3a53232ae182d7c9cff41c1084472d8f32e9"
+ integrity sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==
+ dependencies:
+ "@walletconnect/events" "^1.0.1"
+ "@walletconnect/time" "^1.0.2"
+ tslib "1.14.1"
+
+"@walletconnect/jsonrpc-http-connection@^1.0.4":
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.7.tgz#a6973569b8854c22da707a759d241e4f5c2d5a98"
+ integrity sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==
+ dependencies:
+ "@walletconnect/jsonrpc-utils" "^1.0.6"
+ "@walletconnect/safe-json" "^1.0.1"
+ cross-fetch "^3.1.4"
+ tslib "1.14.1"
+
+"@walletconnect/jsonrpc-provider@^1.0.11", "@walletconnect/jsonrpc-provider@^1.0.12", "@walletconnect/jsonrpc-provider@^1.0.6":
+ version "1.0.13"
+ resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.13.tgz#9a74da648d015e1fffc745f0c7d629457f53648b"
+ integrity sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==
+ dependencies:
+ "@walletconnect/jsonrpc-utils" "^1.0.8"
+ "@walletconnect/safe-json" "^1.0.2"
+ tslib "1.14.1"
+
+"@walletconnect/jsonrpc-types@^1.0.2", "@walletconnect/jsonrpc-types@^1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz#65e3b77046f1a7fa8347ae02bc1b841abe6f290c"
+ integrity sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==
+ dependencies:
+ keyvaluestorage-interface "^1.0.0"
+ tslib "1.14.1"
+
+"@walletconnect/jsonrpc-utils@^1.0.4", "@walletconnect/jsonrpc-utils@^1.0.6", "@walletconnect/jsonrpc-utils@^1.0.7", "@walletconnect/jsonrpc-utils@^1.0.8":
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz#82d0cc6a5d6ff0ecc277cb35f71402c91ad48d72"
+ integrity sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==
+ dependencies:
+ "@walletconnect/environment" "^1.0.1"
+ "@walletconnect/jsonrpc-types" "^1.0.3"
+ tslib "1.14.1"
+
+"@walletconnect/jsonrpc-ws-connection@^1.0.11":
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.11.tgz#1ce59d86f273d576ca73385961303ebd44dd923f"
+ integrity sha512-TiFJ6saasKXD+PwGkm5ZGSw0837nc6EeFmurSPgIT/NofnOV4Tv7CVJqGQN0rQYoJUSYu21cwHNYaFkzNpUN+w==
+ dependencies:
+ "@walletconnect/jsonrpc-utils" "^1.0.6"
+ "@walletconnect/safe-json" "^1.0.2"
+ events "^3.3.0"
+ tslib "1.14.1"
+ ws "^7.5.1"
+
+"@walletconnect/keyvaluestorage@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.0.2.tgz#92f5ca0f54c1a88a093778842ce0c874d86369c8"
+ integrity sha512-U/nNG+VLWoPFdwwKx0oliT4ziKQCEoQ27L5Hhw8YOFGA2Po9A9pULUYNWhDgHkrb0gYDNt//X7wABcEWWBd3FQ==
+ dependencies:
+ safe-json-utils "^1.1.1"
+ tslib "1.14.1"
+
+"@walletconnect/legacy-client@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@walletconnect/legacy-client/-/legacy-client-2.0.0.tgz#9f2c09694789fd4b6c5d68d6423b44bac55aed30"
+ integrity sha512-v5L7rYk9loVnfvUf0mF+76bUPFaU5/Vh7mzL6/950CD/yoGdzYZ3Kj+L7mkC6HPMEGeQsBP1+sqBuiVGZ/aODA==
+ dependencies:
+ "@walletconnect/crypto" "^1.0.3"
+ "@walletconnect/encoding" "^1.0.2"
+ "@walletconnect/jsonrpc-utils" "^1.0.4"
+ "@walletconnect/legacy-types" "^2.0.0"
+ "@walletconnect/legacy-utils" "^2.0.0"
+ "@walletconnect/safe-json" "^1.0.1"
+ "@walletconnect/window-getters" "^1.0.1"
+ "@walletconnect/window-metadata" "^1.0.1"
+ detect-browser "^5.3.0"
+ query-string "^6.13.5"
+
+"@walletconnect/legacy-modal@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@walletconnect/legacy-modal/-/legacy-modal-2.0.0.tgz#d0fab01a1337a8f5d88cdb1430cbef2d46072bbf"
+ integrity sha512-jckNd8lMhm4X7dX9TDdxM3bXKJnaqkRs6K2Mo5j6GmbIF9Eyx40jZ5+q457RVxvM6ciZEDT5s1wBHWdWoOo+9Q==
+ dependencies:
+ "@walletconnect/legacy-types" "^2.0.0"
+ "@walletconnect/legacy-utils" "^2.0.0"
+ copy-to-clipboard "^3.3.3"
+ preact "^10.12.0"
+ qrcode "^1.5.1"
+
+"@walletconnect/legacy-provider@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@walletconnect/legacy-provider/-/legacy-provider-2.0.0.tgz#08e2db1e4c234743b2f30422bc8100bc42e8fc44"
+ integrity sha512-A8xPebMI1A+50HbWwTpFCbwP7G+1NGKdTKyg8BUUg3h3Y9JucpC1W6w/x0v1Xw7qFEqQnz74LoIN/A3ytH9xrQ==
+ dependencies:
+ "@walletconnect/jsonrpc-http-connection" "^1.0.4"
+ "@walletconnect/jsonrpc-provider" "^1.0.6"
+ "@walletconnect/legacy-client" "^2.0.0"
+ "@walletconnect/legacy-modal" "^2.0.0"
+ "@walletconnect/legacy-types" "^2.0.0"
+ "@walletconnect/legacy-utils" "^2.0.0"
+
+"@walletconnect/legacy-types@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@walletconnect/legacy-types/-/legacy-types-2.0.0.tgz#224278ae2874c6a2ca805c2d1d062a511dcf7227"
+ integrity sha512-sOVrA7HUdbI1OwKyPOQU0/DdvTSVFlsXWpAk2K2WvP2erTkBWPMTJq6cv2BmKdoJ3p6gLApT7sd+jHi3OF71uw==
+ dependencies:
+ "@walletconnect/jsonrpc-types" "^1.0.2"
+
+"@walletconnect/legacy-utils@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@walletconnect/legacy-utils/-/legacy-utils-2.0.0.tgz#e3a637c00783f9cd2ae139b640f82223ab78ed9d"
+ integrity sha512-CPWxSVVXw0kgNCxvU126g4GiV3mzXmC8IPJ15twE46aJ1FX+RHEIfAzFMFz2F2+fEhBxL63A7dwNQKDXorRPcQ==
+ dependencies:
+ "@walletconnect/encoding" "^1.0.2"
+ "@walletconnect/jsonrpc-utils" "^1.0.4"
+ "@walletconnect/legacy-types" "^2.0.0"
+ "@walletconnect/safe-json" "^1.0.1"
+ "@walletconnect/window-getters" "^1.0.1"
+ "@walletconnect/window-metadata" "^1.0.1"
+ detect-browser "^5.3.0"
+ query-string "^6.13.5"
+
+"@walletconnect/logger@^2.0.1":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@walletconnect/logger/-/logger-2.0.1.tgz#7f489b96e9a1ff6bf3e58f0fbd6d69718bf844a8"
+ integrity sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ==
+ dependencies:
+ pino "7.11.0"
+ tslib "1.14.1"
+
+"@walletconnect/randombytes@^1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@walletconnect/randombytes/-/randombytes-1.0.3.tgz#e795e4918367fd1e6a2215e075e64ab93e23985b"
+ integrity sha512-35lpzxcHFbTN3ABefC9W+uBpNZl1GC4Wpx0ed30gibfO/y9oLdy1NznbV96HARQKSBV9J9M/rrtIvf6a23jfYw==
+ dependencies:
+ "@walletconnect/encoding" "^1.0.2"
+ "@walletconnect/environment" "^1.0.1"
+ randombytes "^2.1.0"
+ tslib "1.14.1"
+
+"@walletconnect/relay-api@^1.0.9":
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.9.tgz#f8c2c3993dddaa9f33ed42197fc9bfebd790ecaf"
+ integrity sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==
+ dependencies:
+ "@walletconnect/jsonrpc-types" "^1.0.2"
+ tslib "1.14.1"
+
+"@walletconnect/relay-auth@^1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz#0b5c55c9aa3b0ef61f526ce679f3ff8a5c4c2c7c"
+ integrity sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==
+ dependencies:
+ "@stablelib/ed25519" "^1.0.2"
+ "@stablelib/random" "^1.0.1"
+ "@walletconnect/safe-json" "^1.0.1"
+ "@walletconnect/time" "^1.0.2"
+ tslib "1.14.1"
+ uint8arrays "^3.0.0"
+
+"@walletconnect/safe-json@^1.0.1", "@walletconnect/safe-json@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.2.tgz#7237e5ca48046e4476154e503c6d3c914126fa77"
+ integrity sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==
+ dependencies:
+ tslib "1.14.1"
+
+"@walletconnect/sign-client@2.7.4":
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.7.4.tgz#e07db5856f9e45945080a169bbd9cb6849576bac"
+ integrity sha512-hZoCB51GB4u32yxzYnxp8dpzXgo6E7ZWUVOgnihmoMPjgJahPtvB/Ip9jYxI3fuV+ZPQYNlxQgEvR9X+2fLz+g==
+ dependencies:
+ "@walletconnect/core" "2.7.4"
+ "@walletconnect/events" "^1.0.1"
+ "@walletconnect/heartbeat" "1.2.1"
+ "@walletconnect/jsonrpc-utils" "^1.0.7"
+ "@walletconnect/logger" "^2.0.1"
+ "@walletconnect/time" "^1.0.2"
+ "@walletconnect/types" "2.7.4"
+ "@walletconnect/utils" "2.7.4"
+ events "^3.3.0"
+
+"@walletconnect/time@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@walletconnect/time/-/time-1.0.2.tgz#6c5888b835750ecb4299d28eecc5e72c6d336523"
+ integrity sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==
+ dependencies:
+ tslib "1.14.1"
+
+"@walletconnect/types@2.7.4":
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.7.4.tgz#958864e7ef497206a24db0ca629a478ca8e1cc08"
+ integrity sha512-Nagfz8DqLxf0UlVd7xopgBX60EJp1xUEq7J30ALlTbWqEhCHuLK/qPk5vGdJ9Q6+ZDpTW9ShLq1DNf+5nVpVDQ==
+ dependencies:
+ "@walletconnect/events" "^1.0.1"
+ "@walletconnect/heartbeat" "1.2.1"
+ "@walletconnect/jsonrpc-types" "^1.0.2"
+ "@walletconnect/keyvaluestorage" "^1.0.2"
+ "@walletconnect/logger" "^2.0.1"
+ events "^3.3.0"
+
+"@walletconnect/universal-provider@2.7.4":
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.7.4.tgz#f21dcaf89c102bda79f13e92c45833f8f1196775"
+ integrity sha512-suH3o5LpTX7hlx5lU98oLdEM0Ws5ZysjQ4Zr6EWIK1DVT8EDdWbw49ggJSW9IYRLQ2xG22jDvmTIdFAexYOgng==
+ dependencies:
+ "@walletconnect/jsonrpc-http-connection" "^1.0.4"
+ "@walletconnect/jsonrpc-provider" "^1.0.11"
+ "@walletconnect/jsonrpc-types" "^1.0.2"
+ "@walletconnect/jsonrpc-utils" "^1.0.7"
+ "@walletconnect/logger" "^2.0.1"
+ "@walletconnect/sign-client" "2.7.4"
+ "@walletconnect/types" "2.7.4"
+ "@walletconnect/utils" "2.7.4"
+ eip1193-provider "1.0.1"
+ events "^3.3.0"
+
+"@walletconnect/utils@2.7.4":
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.7.4.tgz#314a164aabb7551dae4ac58e63312c9ae6369e1e"
+ integrity sha512-2WEeKB9h/FQvyNmIBYwLtjdLm3Oo55EwtJoxkC00SA7xjf8jYxZ8q2y4P/CJP8oO5ruxBK5Ft0smKvPHXsE58Q==
+ dependencies:
+ "@stablelib/chacha20poly1305" "1.0.1"
+ "@stablelib/hkdf" "1.0.1"
+ "@stablelib/random" "^1.0.2"
+ "@stablelib/sha256" "1.0.1"
+ "@stablelib/x25519" "^1.0.3"
+ "@walletconnect/jsonrpc-utils" "^1.0.7"
+ "@walletconnect/relay-api" "^1.0.9"
+ "@walletconnect/safe-json" "^1.0.2"
+ "@walletconnect/time" "^1.0.2"
+ "@walletconnect/types" "2.7.4"
+ "@walletconnect/window-getters" "^1.0.1"
+ "@walletconnect/window-metadata" "^1.0.1"
+ detect-browser "5.3.0"
+ query-string "7.1.3"
+ uint8arrays "^3.1.0"
+
+"@walletconnect/window-getters@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.1.tgz#f36d1c72558a7f6b87ecc4451fc8bd44f63cbbdc"
+ integrity sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==
+ dependencies:
+ tslib "1.14.1"
+
+"@walletconnect/window-metadata@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz#2124f75447b7e989e4e4e1581d55d25bc75f7be5"
+ integrity sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==
+ dependencies:
+ "@walletconnect/window-getters" "^1.0.1"
+ tslib "1.14.1"
+
+"@web3modal/core@2.4.1":
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/@web3modal/core/-/core-2.4.1.tgz#9b0a60aa88ef8518de7a30bab1278b2c9f046012"
+ integrity sha512-v6Y/eQJSI2YfUTv8rGqjFabqdk3ZPjx6Fe7j5Q8fw0ZWF1YRGM3mySG457qtKQ7D7E1kNKA3BHbaOZ3pgQoG6A==
+ dependencies:
+ buffer "6.0.3"
+ valtio "1.10.5"
+
+"@web3modal/standalone@^2.4.1":
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/@web3modal/standalone/-/standalone-2.4.1.tgz#e10330583ce7b550ba676e4c595ac8ea8715bcdb"
+ integrity sha512-ZrI5LwWeT9sd8A3FdIX/gBp3ZrzrX882Ln1vJN0LTCmeP2OUsYcW5bPxjv1PcJ1YUBY7Tg4aTgMUnAVTTuqb+w==
+ dependencies:
+ "@web3modal/core" "2.4.1"
+ "@web3modal/ui" "2.4.1"
+
+"@web3modal/ui@2.4.1":
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/@web3modal/ui/-/ui-2.4.1.tgz#c1c5a8bf4cd749febd15411ec710b22215e66e56"
+ integrity sha512-x1ceyd3mMJsIHs5UUTLvE+6qyCjhyjL6gB/wVmTDbwASHSQIVyshQJ+s7BwIEMP/pbAsYDg+/M8EiUuE+/E/kg==
+ dependencies:
+ "@web3modal/core" "2.4.1"
+ lit "2.7.4"
+ motion "10.15.5"
+ qrcode "1.5.3"
+
+JSONStream@^1.3.5:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
+ integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==
+ dependencies:
+ jsonparse "^1.2.0"
+ through ">=2.2.7 <3"
+
+abitype@0.8.1:
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.8.1.tgz#9575a21da88bb4094a262a653e526a088ab06041"
+ integrity sha512-n8Di6AWb3i7HnEkBvecU6pG0a5nj5YwMvdAIwPLsQK95ulRy/XS113s/RXvSfTX1iOQJYFrEO3/q4SMWu7OwTA==
+
+abitype@0.8.2:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.8.2.tgz#cacd330d07488a4020d84f54fc361361234b9c83"
+ integrity sha512-B1ViNMGpfx/qjVQi0RTc2HEFHuR9uoCoTEkwELT5Y7pBPtBbctYijz9BK6+Kd0hQ3S70FhYTO2dWWk0QNUEXMA==
+
+accepts@~1.3.8:
+ version "1.3.8"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
+ integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
+ dependencies:
+ mime-types "~2.1.34"
+ negotiator "0.6.3"
+
+acorn-jsx@^5.3.2:
+ version "5.3.2"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
+ integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
+
+acorn@^8.8.0:
+ version "8.8.2"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
+ integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
+
+aes-js@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d"
+ integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==
+
+aes-js@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a"
+ integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==
+
+agentkeepalive@^4.2.1:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255"
+ integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==
+ dependencies:
+ debug "^4.1.0"
+ depd "^2.0.0"
+ humanize-ms "^1.2.1"
+
+ahocorasick@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/ahocorasick/-/ahocorasick-1.0.2.tgz#9eee93aef9d02bfb476d9b648d9b7a40ef2fd500"
+ integrity sha512-hCOfMzbFx5IDutmWLAt6MZwOUjIfSM9G9FyVxytmE4Rs/5YDPWQrD/+IR1w+FweD9H2oOZEnv36TmkjhNURBVA==
+
+ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4:
+ version "6.12.6"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+ansi-regex@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
+ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+ansi-styles@^4.0.0, ansi-styles@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+anymatch@~3.1.2:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
+ integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+argparse@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
+ integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+
+aria-query@^5.1.3:
+ version "5.1.3"
+ resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e"
+ integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==
+ dependencies:
+ deep-equal "^2.0.5"
+
+array-buffer-byte-length@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead"
+ integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==
+ dependencies:
+ call-bind "^1.0.2"
+ is-array-buffer "^3.0.1"
+
+array-flatten@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
+ integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
+
+array-includes@^3.1.5, array-includes@^3.1.6:
+ version "3.1.6"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f"
+ integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
+ get-intrinsic "^1.1.3"
+ is-string "^1.0.7"
+
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
+array.prototype.flat@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2"
+ integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
+ es-shim-unscopables "^1.0.0"
+
+array.prototype.flatmap@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183"
+ integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
+ es-shim-unscopables "^1.0.0"
+
+array.prototype.tosorted@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532"
+ integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
+ es-shim-unscopables "^1.0.0"
+ get-intrinsic "^1.1.3"
+
+asn1.js@^5.2.0:
+ version "5.4.1"
+ resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07"
+ integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==
+ dependencies:
+ bn.js "^4.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+ safer-buffer "^2.1.0"
+
+asn1@~0.2.3:
+ version "0.2.6"
+ resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d"
+ integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==
+ dependencies:
+ safer-buffer "~2.1.0"
+
+assert-plus@1.0.0, assert-plus@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+ integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==
+
+ast-types-flow@^0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
+ integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==
+
+async-limiter@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
+ integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
+
+async-mutex@^0.2.6:
+ version "0.2.6"
+ resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40"
+ integrity sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==
+ dependencies:
+ tslib "^2.0.0"
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
+
+atomic-sleep@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b"
+ integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==
+
+autoprefixer@^10.4.14:
+ version "10.4.14"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d"
+ integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==
+ dependencies:
+ browserslist "^4.21.5"
+ caniuse-lite "^1.0.30001464"
+ fraction.js "^4.2.0"
+ normalize-range "^0.1.2"
+ picocolors "^1.0.0"
+ postcss-value-parser "^4.2.0"
+
+available-typed-arrays@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
+ integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
+
+aws-sign2@~0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
+ integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==
+
+aws4@^1.8.0:
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3"
+ integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==
+
+axe-core@^4.6.2:
+ version "4.7.2"
+ resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.2.tgz#040a7342b20765cb18bb50b628394c21bccc17a0"
+ integrity sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==
+
+axios@^0.21.0:
+ version "0.21.4"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575"
+ integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==
+ dependencies:
+ follow-redirects "^1.14.0"
+
+axios@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f"
+ integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==
+ dependencies:
+ follow-redirects "^1.15.0"
+ form-data "^4.0.0"
+ proxy-from-env "^1.1.0"
+
+axobject-query@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1"
+ integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==
+ dependencies:
+ deep-equal "^2.0.5"
+
+babel-plugin-macros@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1"
+ integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ cosmiconfig "^7.0.0"
+ resolve "^1.19.0"
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+base-x@^3.0.2, base-x@^3.0.8:
+ version "3.0.9"
+ resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320"
+ integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==
+ dependencies:
+ safe-buffer "^5.0.1"
+
+base64-js@^1.3.1:
+ version "1.5.1"
+ resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz"
+ integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+
+bcrypt-pbkdf@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
+ integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==
+ dependencies:
+ tweetnacl "^0.14.3"
+
+bech32@1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9"
+ integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==
+
+big-integer@^1.6.44:
+ version "1.6.51"
+ resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686"
+ integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==
+
+bigint-buffer@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442"
+ integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==
+ dependencies:
+ bindings "^1.3.0"
+
+bignumber.js@^9.0.0:
+ version "9.1.1"
+ resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6"
+ integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==
+
+binary-extensions@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
+ integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
+
+bind-decorator@^1.0.11:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/bind-decorator/-/bind-decorator-1.0.11.tgz#e41bc06a1f65dd9cec476c91c5daf3978488252f"
+ integrity sha512-yzkH0uog6Vv/vQ9+rhSKxecnqGUZHYncg7qS7voz3Q76+TAi1SGiOKk2mlOvusQnFz9Dc4BC/NMkeXu11YgjJg==
+
+bindings@^1.3.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==
+ dependencies:
+ file-uri-to-path "1.0.0"
+
+blakejs@^1.1.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814"
+ integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==
+
+"blind-threshold-bls@https://github.com/celo-org/blind-threshold-bls-wasm#3d1013af":
+ version "0.1.1"
+ resolved "https://github.com/celo-org/blind-threshold-bls-wasm#3d1013afbab220c0fdf31af2b944c9c2b6fb65eb"
+
+"blind-threshold-bls@https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a":
+ version "0.1.0"
+ resolved "https://github.com/celo-org/blind-threshold-bls-wasm#e1e2f8a1ab5154c2f0b1c55cb0d61fbb1d907208"
+
+bluebird@^3.5.0:
+ version "3.7.2"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
+
+bn.js@4.11.6:
+ version "4.11.6"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215"
+ integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==
+
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.9:
+ version "4.12.0"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
+ integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
+
+bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.2.0, bn.js@^5.2.1:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70"
+ integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==
+
+body-parser@1.20.1:
+ version "1.20.1"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668"
+ integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==
+ dependencies:
+ bytes "3.1.2"
+ content-type "~1.0.4"
+ debug "2.6.9"
+ depd "2.0.0"
+ destroy "1.2.0"
+ http-errors "2.0.0"
+ iconv-lite "0.4.24"
+ on-finished "2.4.1"
+ qs "6.11.0"
+ raw-body "2.5.1"
+ type-is "~1.6.18"
+ unpipe "1.0.0"
+
+body-parser@^1.16.0:
+ version "1.20.2"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd"
+ integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==
+ dependencies:
+ bytes "3.1.2"
+ content-type "~1.0.5"
+ debug "2.6.9"
+ depd "2.0.0"
+ destroy "1.2.0"
+ http-errors "2.0.0"
+ iconv-lite "0.4.24"
+ on-finished "2.4.1"
+ qs "6.11.0"
+ raw-body "2.5.2"
+ type-is "~1.6.18"
+ unpipe "1.0.0"
+
+borsh@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a"
+ integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==
+ dependencies:
+ bn.js "^5.2.0"
+ bs58 "^4.0.0"
+ text-encoding-utf-8 "^1.0.2"
+
+bplist-parser@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e"
+ integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==
+ dependencies:
+ big-integer "^1.6.44"
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@^3.0.2, braces@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+brorand@^1.0.1, brorand@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
+ integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==
+
+browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
+ integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
+ dependencies:
+ buffer-xor "^1.0.3"
+ cipher-base "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.3"
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+browserify-cipher@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
+ integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
+ dependencies:
+ browserify-aes "^1.0.4"
+ browserify-des "^1.0.0"
+ evp_bytestokey "^1.0.0"
+
+browserify-des@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
+ integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
+ dependencies:
+ cipher-base "^1.0.1"
+ des.js "^1.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+browserify-rsa@^4.0.0, browserify-rsa@^4.0.1:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d"
+ integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==
+ dependencies:
+ bn.js "^5.0.0"
+ randombytes "^2.0.1"
+
+browserify-sign@^4.0.0:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3"
+ integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==
+ dependencies:
+ bn.js "^5.1.1"
+ browserify-rsa "^4.0.1"
+ create-hash "^1.2.0"
+ create-hmac "^1.1.7"
+ elliptic "^6.5.3"
+ inherits "^2.0.4"
+ parse-asn1 "^5.1.5"
+ readable-stream "^3.6.0"
+ safe-buffer "^5.2.0"
+
+browserslist@^4.21.5:
+ version "4.21.7"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.7.tgz#e2b420947e5fb0a58e8f4668ae6e23488127e551"
+ integrity sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==
+ dependencies:
+ caniuse-lite "^1.0.30001489"
+ electron-to-chromium "^1.4.411"
+ node-releases "^2.0.12"
+ update-browserslist-db "^1.0.11"
+
+bs58@^4.0.0, bs58@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a"
+ integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==
+ dependencies:
+ base-x "^3.0.2"
+
+bs58check@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc"
+ integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==
+ dependencies:
+ bs58 "^4.0.0"
+ create-hash "^1.1.0"
+ safe-buffer "^5.1.2"
+
+buffer-to-arraybuffer@^0.0.5:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a"
+ integrity sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==
+
+buffer-xor@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
+ integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==
+
+buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6"
+ integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==
+ dependencies:
+ base64-js "^1.3.1"
+ ieee754 "^1.2.1"
+
+buffer@^5.0.5, buffer@^5.5.0, buffer@^5.6.0:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
+ integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
+ dependencies:
+ base64-js "^1.3.1"
+ ieee754 "^1.1.13"
+
+bufferutil@^4.0.1:
+ version "4.0.7"
+ resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad"
+ integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==
+ dependencies:
+ node-gyp-build "^4.3.0"
+
+bundle-name@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-3.0.0.tgz#ba59bcc9ac785fb67ccdbf104a2bf60c099f0e1a"
+ integrity sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==
+ dependencies:
+ run-applescript "^5.0.0"
+
+bunyan-debug-stream@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/bunyan-debug-stream/-/bunyan-debug-stream-2.0.0.tgz#b9593e38753f594e3f9db3eb2fdebdc2af147a9f"
+ integrity sha512-Ovl43CJ7nUwalLzdXc6E1nGIy6ift9Z/QpYXUtsjpDAg35ZFKXifKNZyfpMGuN3N7ijLLqbnxPsMMHsXDdXa9A==
+ dependencies:
+ colors "^1.0.3"
+ exception-formatter "^1.0.4"
+
+bunyan-gke-stackdriver@0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/bunyan-gke-stackdriver/-/bunyan-gke-stackdriver-0.1.2.tgz#a47e3724bbb324b1ec0b7dc4350c4d7073aae66d"
+ integrity sha512-eY5OLgAXvOvOq2YpxI0HlV5HjAcLm36Ln3PxxsztO+2GrFSgU3oXoic2LCif/heBKoyOZdMyXKWF5dvswSOS6w==
+
+bunyan@1.8.12:
+ version "1.8.12"
+ resolved "https://registry.yarnpkg.com/bunyan/-/bunyan-1.8.12.tgz#f150f0f6748abdd72aeae84f04403be2ef113797"
+ integrity sha512-dmDUbGHeGcvCDLRFOscZkwx1ZO/aFz3bJOCi5nCgzdhFGPxwK+y5AcDBnqagNGlJZ7lje/l6JUEz9mQcutttdg==
+ optionalDependencies:
+ dtrace-provider "~0.8"
+ moment "^2.10.6"
+ mv "~2"
+ safe-json-stringify "~1"
+
+busboy@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893"
+ integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==
+ dependencies:
+ streamsearch "^1.1.0"
+
+bytes@3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
+ integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
+
+cacheable-lookup@^5.0.3:
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005"
+ integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==
+
+cacheable-request@^6.0.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912"
+ integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==
+ dependencies:
+ clone-response "^1.0.2"
+ get-stream "^5.1.0"
+ http-cache-semantics "^4.0.0"
+ keyv "^3.0.0"
+ lowercase-keys "^2.0.0"
+ normalize-url "^4.1.0"
+ responselike "^1.0.2"
+
+cacheable-request@^7.0.2:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27"
+ integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==
+ dependencies:
+ clone-response "^1.0.2"
+ get-stream "^5.1.0"
+ http-cache-semantics "^4.0.0"
+ keyv "^4.0.0"
+ lowercase-keys "^2.0.0"
+ normalize-url "^6.0.1"
+ responselike "^2.0.0"
+
+call-bind@^1.0.0, call-bind@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
+ integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
+ dependencies:
+ function-bind "^1.1.1"
+ get-intrinsic "^1.0.2"
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+camelcase@^5.0.0:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
+caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001489:
+ version "1.0.30001492"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001492.tgz#4a06861788a52b4c81fd3344573b68cc87fe062b"
+ integrity sha512-2efF8SAZwgAX1FJr87KWhvuJxnGJKOnctQa8xLOskAXNXq8oiuqgl6u1kk3fFpsp3GgvzlRjiK1sl63hNtFADw==
+
+caseless@~0.12.0:
+ version "0.12.0"
+ resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
+ integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==
+
+chalk@^2.0.0:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@^4.0.0, chalk@^4.1.1:
+ version "4.1.2"
+ resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+"chokidar@>=3.0.0 <4.0.0":
+ version "3.5.3"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
+ integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
+ dependencies:
+ anymatch "~3.1.2"
+ braces "~3.0.2"
+ glob-parent "~5.1.2"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.6.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+chownr@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
+ integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
+
+cids@^0.7.1:
+ version "0.7.5"
+ resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2"
+ integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==
+ dependencies:
+ buffer "^5.5.0"
+ class-is "^1.1.0"
+ multibase "~0.6.0"
+ multicodec "^1.0.0"
+ multihashes "~0.4.15"
+
+cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
+ integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+class-is@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825"
+ integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==
+
+client-only@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1"
+ integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==
+
+cliui@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1"
+ integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.0"
+ wrap-ansi "^6.2.0"
+
+cliui@^7.0.2:
+ version "7.0.4"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
+ integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.0"
+ wrap-ansi "^7.0.0"
+
+cliui@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
+ integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.1"
+ wrap-ansi "^7.0.0"
+
+clone-response@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3"
+ integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==
+ dependencies:
+ mimic-response "^1.0.0"
+
+clsx@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
+ integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==
+
+clsx@^1.1.0, clsx@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12"
+ integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==
+
+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-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
+
+color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+colors@^1.0.3:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
+ integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
+
+combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6:
+ 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"
+
+commander@^2.20.3:
+ version "2.20.3"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
+ integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
+
+content-disposition@0.5.4:
+ version "0.5.4"
+ resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
+ integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
+ dependencies:
+ safe-buffer "5.2.1"
+
+content-hash@^2.5.2:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211"
+ integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==
+ dependencies:
+ cids "^0.7.1"
+ multicodec "^0.5.5"
+ multihashes "^0.4.15"
+
+content-type@~1.0.4, content-type@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
+ integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
+
+convert-source-map@^1.5.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
+ integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
+
+cookie-signature@1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
+ integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
+
+cookie@0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
+ integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
+
+cookiejar@^2.1.1:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b"
+ integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==
+
+copy-to-clipboard@^3.3.3:
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0"
+ integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==
+ dependencies:
+ toggle-selection "^1.0.6"
+
+core-util-is@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==
+
+cors@^2.8.1:
+ version "2.8.5"
+ resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
+ integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==
+ dependencies:
+ object-assign "^4"
+ vary "^1"
+
+cosmiconfig@^7.0.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6"
+ integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==
+ dependencies:
+ "@types/parse-json" "^4.0.0"
+ import-fresh "^3.2.1"
+ parse-json "^5.0.0"
+ path-type "^4.0.0"
+ yaml "^1.10.0"
+
+country-data@^0.0.31:
+ version "0.0.31"
+ resolved "https://registry.yarnpkg.com/country-data/-/country-data-0.0.31.tgz#80966b8e1d147fa6d6a589d32933f8793774956d"
+ integrity sha512-YqlY/i6ikZwoBFfdjK+hJTGaBdTgDpXLI15MCj2UsXZ2cPBb+Kx86AXmDH7PRGt0LUleck0cCgNdWeIhfbcxkQ==
+ dependencies:
+ currency-symbol-map "~2"
+ underscore ">1.4.4"
+
+create-ecdh@^4.0.0:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e"
+ integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==
+ dependencies:
+ bn.js "^4.1.0"
+ elliptic "^6.5.3"
+
+create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
+ integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
+ dependencies:
+ cipher-base "^1.0.1"
+ inherits "^2.0.1"
+ md5.js "^1.3.4"
+ ripemd160 "^2.0.1"
+ sha.js "^2.4.0"
+
+create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
+ integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
+ dependencies:
+ cipher-base "^1.0.3"
+ create-hash "^1.1.0"
+ inherits "^2.0.1"
+ ripemd160 "^2.0.0"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+cross-fetch@3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.4.tgz#7bef7020207e684a7638ef5f2f698e24d9eb283c"
+ integrity sha512-MSHgpjQqgbT/94D4CyADeNoYh52zMkCX4pcJvPP5WqPsLFMKjr2TCMg381ox5qI0ii2dPwaLx/00477knXqXVw==
+ dependencies:
+ node-fetch "2.6.0"
+ whatwg-fetch "3.0.0"
+
+cross-fetch@^3.0.6, cross-fetch@^3.1.4, cross-fetch@^3.1.5:
+ version "3.1.6"
+ resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.6.tgz#bae05aa31a4da760969756318feeee6e70f15d6c"
+ integrity sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==
+ dependencies:
+ node-fetch "^2.6.11"
+
+cross-spawn@^7.0.2, cross-spawn@^7.0.3:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
+crypto-browserify@3.12.0:
+ version "3.12.0"
+ resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
+ integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
+ dependencies:
+ browserify-cipher "^1.0.0"
+ browserify-sign "^4.0.0"
+ create-ecdh "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.0"
+ diffie-hellman "^5.0.0"
+ inherits "^2.0.1"
+ pbkdf2 "^3.0.3"
+ public-encrypt "^4.0.0"
+ randombytes "^2.0.0"
+ randomfill "^1.0.3"
+
+css-what@^5.0.1:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe"
+ integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==
+
+cssesc@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
+ integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+
+csstype@^3.0.2, csstype@^3.0.7, csstype@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b"
+ integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==
+
+currency-symbol-map@~2:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/currency-symbol-map/-/currency-symbol-map-2.2.0.tgz#2b3c1872ff1ac2ce595d8273e58e1fff0272aea2"
+ integrity sha512-fPZJ3jqM68+AAgqQ7UaGbgHL/39rp6l7GyqS2k1HJPu/kpS8D07x/+Uup6a9tCUKIlOFcRrDCf1qxSt8jnI5BA==
+
+d@1, d@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
+ integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==
+ dependencies:
+ es5-ext "^0.10.50"
+ type "^1.0.1"
+
+damerau-levenshtein@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7"
+ integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==
+
+dashdash@^1.12.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+ integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==
+ dependencies:
+ assert-plus "^1.0.0"
+
+debug@2.6.9, debug@^2.2.0:
+ 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.2.7:
+ version "3.2.7"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
+ integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
+ dependencies:
+ ms "^2.1.1"
+
+debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
+decamelize@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==
+
+decode-uri-component@^0.2.0, decode-uri-component@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
+ integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
+
+decompress-response@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
+ integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==
+ dependencies:
+ mimic-response "^1.0.0"
+
+decompress-response@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
+ integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==
+ dependencies:
+ mimic-response "^3.1.0"
+
+deep-equal@^2.0.5:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.1.tgz#c72ab22f3a7d3503a4ca87dde976fe9978816739"
+ integrity sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==
+ dependencies:
+ array-buffer-byte-length "^1.0.0"
+ call-bind "^1.0.2"
+ es-get-iterator "^1.1.3"
+ get-intrinsic "^1.2.0"
+ is-arguments "^1.1.1"
+ is-array-buffer "^3.0.2"
+ is-date-object "^1.0.5"
+ is-regex "^1.1.4"
+ is-shared-array-buffer "^1.0.2"
+ isarray "^2.0.5"
+ object-is "^1.1.5"
+ object-keys "^1.1.1"
+ object.assign "^4.1.4"
+ regexp.prototype.flags "^1.5.0"
+ side-channel "^1.0.4"
+ which-boxed-primitive "^1.0.2"
+ which-collection "^1.0.1"
+ which-typed-array "^1.1.9"
+
+deep-is@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
+ integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
+
+deep-object-diff@^1.1.0:
+ version "1.1.9"
+ resolved "https://registry.yarnpkg.com/deep-object-diff/-/deep-object-diff-1.1.9.tgz#6df7ef035ad6a0caa44479c536ed7b02570f4595"
+ integrity sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==
+
+deepmerge@^4.2.2:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a"
+ integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==
+
+default-browser-id@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c"
+ integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==
+ dependencies:
+ bplist-parser "^0.2.0"
+ untildify "^4.0.0"
+
+default-browser@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-4.0.0.tgz#53c9894f8810bf86696de117a6ce9085a3cbc7da"
+ integrity sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==
+ dependencies:
+ bundle-name "^3.0.0"
+ default-browser-id "^3.0.0"
+ execa "^7.1.1"
+ titleize "^3.0.0"
+
+defer-to-connect@^1.0.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
+ integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==
+
+defer-to-connect@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587"
+ integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==
+
+define-lazy-prop@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f"
+ integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==
+
+define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5"
+ integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==
+ dependencies:
+ has-property-descriptors "^1.0.0"
+ object-keys "^1.1.1"
+
+delay@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d"
+ integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
+
+depd@2.0.0, depd@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
+ integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
+
+des.js@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da"
+ integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==
+ dependencies:
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+destroy@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
+ integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
+
+detect-browser@5.3.0, detect-browser@^5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca"
+ integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==
+
+detect-node-es@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493"
+ integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==
+
+diffie-hellman@^5.0.0:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
+ integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
+ dependencies:
+ bn.js "^4.1.0"
+ miller-rabin "^4.0.0"
+ randombytes "^2.0.0"
+
+dijkstrajs@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz#4c8dbdea1f0f6478bff94d9c49c784d623e4fc23"
+ integrity sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==
+
+dir-glob@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+ dependencies:
+ path-type "^4.0.0"
+
+doctrine@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
+ integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
+ dependencies:
+ esutils "^2.0.2"
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
+dom-helpers@^5.0.1:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902"
+ integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==
+ dependencies:
+ "@babel/runtime" "^7.8.7"
+ csstype "^3.0.2"
+
+dom-walk@^0.1.0:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84"
+ integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==
+
+dotenv@^8.2.0:
+ version "8.6.0"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b"
+ integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==
+
+dtrace-provider@~0.8:
+ version "0.8.8"
+ resolved "https://registry.yarnpkg.com/dtrace-provider/-/dtrace-provider-0.8.8.tgz#2996d5490c37e1347be263b423ed7b297fb0d97e"
+ integrity sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==
+ dependencies:
+ nan "^2.14.0"
+
+duplexer3@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e"
+ integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==
+
+duplexify@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0"
+ integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==
+ dependencies:
+ end-of-stream "^1.4.1"
+ inherits "^2.0.3"
+ readable-stream "^3.1.1"
+ stream-shift "^1.0.0"
+
+ecc-jsbn@~0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
+ integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==
+ dependencies:
+ jsbn "~0.1.0"
+ safer-buffer "^2.1.0"
+
+ee-first@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+ integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
+
+eip1193-provider@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/eip1193-provider/-/eip1193-provider-1.0.1.tgz#420d29cf4f6c443e3f32e718fb16fafb250637c3"
+ integrity sha512-kSuqwQ26d7CzuS/t3yRXo2Su2cVH0QfvyKbr2H7Be7O5YDyIq4hQGCNTo5wRdP07bt+E2R/8nPCzey4ojBHf7g==
+ dependencies:
+ "@json-rpc-tools/provider" "^1.5.5"
+
+electron-to-chromium@^1.4.411:
+ version "1.4.414"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.414.tgz#f9eedb6fb01b50439d8228d8ee3a6fa5e0108437"
+ integrity sha512-RRuCvP6ekngVh2SAJaOKT/hxqc9JAsK+Pe0hP5tGQIfonU2Zy9gMGdJ+mBdyl/vNucMG6gkXYtuM4H/1giws5w==
+
+elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4:
+ version "6.5.4"
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
+ integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
+ dependencies:
+ bn.js "^4.11.9"
+ brorand "^1.1.0"
+ hash.js "^1.0.0"
+ hmac-drbg "^1.0.1"
+ inherits "^2.0.4"
+ minimalistic-assert "^1.0.1"
+ minimalistic-crypto-utils "^1.0.1"
+
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+emoji-regex@^9.2.2:
+ version "9.2.2"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
+ integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
+
+encode-utf8@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda"
+ integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==
+
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+ integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
+
+end-of-stream@^1.1.0, end-of-stream@^1.4.1:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+ dependencies:
+ once "^1.4.0"
+
+enhanced-resolve@^5.12.0:
+ version "5.14.1"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz#de684b6803724477a4af5d74ccae5de52c25f6b3"
+ integrity sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==
+ dependencies:
+ graceful-fs "^4.2.4"
+ tapable "^2.2.0"
+
+error-ex@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+es-abstract@^1.19.0, es-abstract@^1.20.4:
+ version "1.21.2"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff"
+ integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==
+ dependencies:
+ array-buffer-byte-length "^1.0.0"
+ available-typed-arrays "^1.0.5"
+ call-bind "^1.0.2"
+ es-set-tostringtag "^2.0.1"
+ es-to-primitive "^1.2.1"
+ function.prototype.name "^1.1.5"
+ get-intrinsic "^1.2.0"
+ get-symbol-description "^1.0.0"
+ globalthis "^1.0.3"
+ gopd "^1.0.1"
+ has "^1.0.3"
+ has-property-descriptors "^1.0.0"
+ has-proto "^1.0.1"
+ has-symbols "^1.0.3"
+ internal-slot "^1.0.5"
+ is-array-buffer "^3.0.2"
+ is-callable "^1.2.7"
+ is-negative-zero "^2.0.2"
+ is-regex "^1.1.4"
+ is-shared-array-buffer "^1.0.2"
+ is-string "^1.0.7"
+ is-typed-array "^1.1.10"
+ is-weakref "^1.0.2"
+ object-inspect "^1.12.3"
+ object-keys "^1.1.1"
+ object.assign "^4.1.4"
+ regexp.prototype.flags "^1.4.3"
+ safe-regex-test "^1.0.0"
+ string.prototype.trim "^1.2.7"
+ string.prototype.trimend "^1.0.6"
+ string.prototype.trimstart "^1.0.6"
+ typed-array-length "^1.0.4"
+ unbox-primitive "^1.0.2"
+ which-typed-array "^1.1.9"
+
+es-get-iterator@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6"
+ integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.1.3"
+ has-symbols "^1.0.3"
+ is-arguments "^1.1.1"
+ is-map "^2.0.2"
+ is-set "^2.0.2"
+ is-string "^1.0.7"
+ isarray "^2.0.5"
+ stop-iteration-iterator "^1.0.0"
+
+es-set-tostringtag@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8"
+ integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==
+ dependencies:
+ get-intrinsic "^1.1.3"
+ has "^1.0.3"
+ has-tostringtag "^1.0.0"
+
+es-shim-unscopables@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241"
+ integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==
+ dependencies:
+ has "^1.0.3"
+
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+es5-ext@^0.10.35, es5-ext@^0.10.50:
+ version "0.10.62"
+ resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5"
+ integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==
+ dependencies:
+ es6-iterator "^2.0.3"
+ es6-symbol "^3.1.3"
+ next-tick "^1.1.0"
+
+es6-iterator@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
+ integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==
+ dependencies:
+ d "1"
+ es5-ext "^0.10.35"
+ es6-symbol "^3.1.1"
+
+es6-promise@^4.0.3:
+ version "4.2.8"
+ resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
+ integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
+
+es6-promisify@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203"
+ integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==
+ dependencies:
+ es6-promise "^4.0.3"
+
+es6-symbol@^3.1.1, es6-symbol@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
+ integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==
+ dependencies:
+ d "^1.0.1"
+ ext "^1.1.2"
+
+escalade@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz"
+ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+
+escape-html@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+ integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
+
+escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+
+escape-string-regexp@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
+ integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
+
+eslint-config-next@^13.4.2:
+ version "13.4.4"
+ resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-13.4.4.tgz#95356e96f3796ad0587fa2aaa51ec4a81e71cedc"
+ integrity sha512-z/PMbm6L0iC/fwISULxe8IVy4DtNqZk2wQY711o35klenq70O6ns82A8yuMVCFjHC0DIyB2lyugesRtuk9u8dQ==
+ dependencies:
+ "@next/eslint-plugin-next" "13.4.4"
+ "@rushstack/eslint-patch" "^1.1.3"
+ "@typescript-eslint/parser" "^5.42.0"
+ eslint-import-resolver-node "^0.3.6"
+ eslint-import-resolver-typescript "^3.5.2"
+ eslint-plugin-import "^2.26.0"
+ eslint-plugin-jsx-a11y "^6.5.1"
+ eslint-plugin-react "^7.31.7"
+ eslint-plugin-react-hooks "^4.5.0"
+
+eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.7:
+ version "0.3.7"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7"
+ integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==
+ dependencies:
+ debug "^3.2.7"
+ is-core-module "^2.11.0"
+ resolve "^1.22.1"
+
+eslint-import-resolver-typescript@^3.5.2:
+ version "3.5.5"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.5.tgz#0a9034ae7ed94b254a360fbea89187b60ea7456d"
+ integrity sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==
+ dependencies:
+ debug "^4.3.4"
+ enhanced-resolve "^5.12.0"
+ eslint-module-utils "^2.7.4"
+ get-tsconfig "^4.5.0"
+ globby "^13.1.3"
+ is-core-module "^2.11.0"
+ is-glob "^4.0.3"
+ synckit "^0.8.5"
+
+eslint-module-utils@^2.7.4:
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49"
+ integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==
+ dependencies:
+ debug "^3.2.7"
+
+eslint-plugin-import@^2.26.0:
+ version "2.27.5"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65"
+ integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==
+ dependencies:
+ array-includes "^3.1.6"
+ array.prototype.flat "^1.3.1"
+ array.prototype.flatmap "^1.3.1"
+ debug "^3.2.7"
+ doctrine "^2.1.0"
+ eslint-import-resolver-node "^0.3.7"
+ eslint-module-utils "^2.7.4"
+ has "^1.0.3"
+ is-core-module "^2.11.0"
+ is-glob "^4.0.3"
+ minimatch "^3.1.2"
+ object.values "^1.1.6"
+ resolve "^1.22.1"
+ semver "^6.3.0"
+ tsconfig-paths "^3.14.1"
+
+eslint-plugin-jsx-a11y@^6.5.1:
+ version "6.7.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976"
+ integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==
+ dependencies:
+ "@babel/runtime" "^7.20.7"
+ aria-query "^5.1.3"
+ array-includes "^3.1.6"
+ array.prototype.flatmap "^1.3.1"
+ ast-types-flow "^0.0.7"
+ axe-core "^4.6.2"
+ axobject-query "^3.1.1"
+ damerau-levenshtein "^1.0.8"
+ emoji-regex "^9.2.2"
+ has "^1.0.3"
+ jsx-ast-utils "^3.3.3"
+ language-tags "=1.0.5"
+ minimatch "^3.1.2"
+ object.entries "^1.1.6"
+ object.fromentries "^2.0.6"
+ semver "^6.3.0"
+
+eslint-plugin-react-hooks@^4.5.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3"
+ integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==
+
+eslint-plugin-react@^7.31.7:
+ version "7.32.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10"
+ integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==
+ dependencies:
+ array-includes "^3.1.6"
+ array.prototype.flatmap "^1.3.1"
+ array.prototype.tosorted "^1.1.1"
+ doctrine "^2.1.0"
+ estraverse "^5.3.0"
+ jsx-ast-utils "^2.4.1 || ^3.0.0"
+ minimatch "^3.1.2"
+ object.entries "^1.1.6"
+ object.fromentries "^2.0.6"
+ object.hasown "^1.1.2"
+ object.values "^1.1.6"
+ prop-types "^15.8.1"
+ resolve "^2.0.0-next.4"
+ semver "^6.3.0"
+ string.prototype.matchall "^4.0.8"
+
+eslint-scope@^7.2.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b"
+ integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^5.2.0"
+
+eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994"
+ integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==
+
+eslint@^8.40.0:
+ version "8.41.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.41.0.tgz#3062ca73363b4714b16dbc1e60f035e6134b6f1c"
+ integrity sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==
+ dependencies:
+ "@eslint-community/eslint-utils" "^4.2.0"
+ "@eslint-community/regexpp" "^4.4.0"
+ "@eslint/eslintrc" "^2.0.3"
+ "@eslint/js" "8.41.0"
+ "@humanwhocodes/config-array" "^0.11.8"
+ "@humanwhocodes/module-importer" "^1.0.1"
+ "@nodelib/fs.walk" "^1.2.8"
+ ajv "^6.10.0"
+ chalk "^4.0.0"
+ cross-spawn "^7.0.2"
+ debug "^4.3.2"
+ doctrine "^3.0.0"
+ escape-string-regexp "^4.0.0"
+ eslint-scope "^7.2.0"
+ eslint-visitor-keys "^3.4.1"
+ espree "^9.5.2"
+ esquery "^1.4.2"
+ esutils "^2.0.2"
+ fast-deep-equal "^3.1.3"
+ file-entry-cache "^6.0.1"
+ find-up "^5.0.0"
+ glob-parent "^6.0.2"
+ globals "^13.19.0"
+ graphemer "^1.4.0"
+ ignore "^5.2.0"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ is-glob "^4.0.0"
+ is-path-inside "^3.0.3"
+ js-yaml "^4.1.0"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.4.1"
+ lodash.merge "^4.6.2"
+ minimatch "^3.1.2"
+ natural-compare "^1.4.0"
+ optionator "^0.9.1"
+ strip-ansi "^6.0.1"
+ strip-json-comments "^3.1.0"
+ text-table "^0.2.0"
+
+espree@^9.5.2:
+ version "9.5.2"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b"
+ integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==
+ dependencies:
+ acorn "^8.8.0"
+ acorn-jsx "^5.3.2"
+ eslint-visitor-keys "^3.4.1"
+
+esquery@^1.4.2:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b"
+ integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
+ dependencies:
+ estraverse "^5.1.0"
+
+esrecurse@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
+ dependencies:
+ estraverse "^5.2.0"
+
+estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
+ integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
+
+esutils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+etag@~1.8.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+ integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
+
+eth-block-tracker@6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-6.1.0.tgz#0481f97bbb88a100b9d45806fe7e37af741cbefc"
+ integrity sha512-K9SY8+/xMBi4M5HHTDdxnpEqEEGjbNpzHFqvxyjMZej8InV/B+CkFRKM6W+uvrFJ7m8Zd1E0qUkseU3vdIDFYQ==
+ dependencies:
+ "@metamask/safe-event-emitter" "^2.0.0"
+ "@metamask/utils" "^3.0.1"
+ json-rpc-random-id "^1.0.1"
+ pify "^3.0.0"
+
+eth-ens-namehash@2.0.8:
+ version "2.0.8"
+ resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf"
+ integrity sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==
+ dependencies:
+ idna-uts46-hx "^2.3.1"
+ js-sha3 "^0.5.7"
+
+eth-json-rpc-filters@5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/eth-json-rpc-filters/-/eth-json-rpc-filters-5.1.0.tgz#f0c2aeaec2a45e2dc6ca1b9843d8e85447821427"
+ integrity sha512-fos+9xmoa1A2Ytsc9eYof17r81BjdJOUcGcgZn4K/tKdCCTb+a8ytEtwlu1op5qsXFDlgGmstTELFrDEc89qEQ==
+ dependencies:
+ "@metamask/safe-event-emitter" "^2.0.0"
+ async-mutex "^0.2.6"
+ eth-query "^2.1.2"
+ json-rpc-engine "^6.1.0"
+ pify "^5.0.0"
+
+eth-lib@0.2.8, eth-lib@^0.2.8:
+ version "0.2.8"
+ resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8"
+ integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==
+ dependencies:
+ bn.js "^4.11.6"
+ elliptic "^6.4.0"
+ xhr-request-promise "^0.1.2"
+
+eth-lib@^0.1.26:
+ version "0.1.29"
+ resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9"
+ integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==
+ dependencies:
+ bn.js "^4.11.6"
+ elliptic "^6.4.0"
+ nano-json-stream-parser "^0.1.2"
+ servify "^0.1.12"
+ ws "^3.0.0"
+ xhr-request-promise "^0.1.2"
+
+eth-query@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e"
+ integrity sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==
+ dependencies:
+ json-rpc-random-id "^1.0.0"
+ xtend "^4.0.1"
+
+eth-rpc-errors@4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.2.tgz#11bc164e25237a679061ac05b7da7537b673d3b7"
+ integrity sha512-n+Re6Gu8XGyfFy1it0AwbD1x0MUzspQs0D5UiPs1fFPCr6WAwZM+vbIhXheBFrpgosqN9bs5PqlB4Q61U/QytQ==
+ dependencies:
+ fast-safe-stringify "^2.0.6"
+
+eth-rpc-errors@^4.0.2:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz#6ddb6190a4bf360afda82790bb7d9d5e724f423a"
+ integrity sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==
+ dependencies:
+ fast-safe-stringify "^2.0.6"
+
+ethereum-bloom-filters@^1.0.6:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a"
+ integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==
+ dependencies:
+ js-sha3 "^0.8.0"
+
+ethereum-cryptography@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191"
+ integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==
+ dependencies:
+ "@types/pbkdf2" "^3.0.0"
+ "@types/secp256k1" "^4.0.1"
+ blakejs "^1.1.0"
+ browserify-aes "^1.2.0"
+ bs58check "^2.1.2"
+ create-hash "^1.2.0"
+ create-hmac "^1.1.7"
+ hash.js "^1.1.7"
+ keccak "^3.0.0"
+ pbkdf2 "^3.0.17"
+ randombytes "^2.1.0"
+ safe-buffer "^5.1.2"
+ scrypt-js "^3.0.0"
+ secp256k1 "^4.0.1"
+ setimmediate "^1.0.5"
+
+ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979"
+ integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA==
+
+ethereumjs-tx@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed"
+ integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==
+ dependencies:
+ ethereumjs-common "^1.5.0"
+ ethereumjs-util "^6.0.0"
+
+ethereumjs-util@^5.2.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz#a833f0e5fca7e5b361384dc76301a721f537bf65"
+ integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==
+ dependencies:
+ bn.js "^4.11.0"
+ create-hash "^1.1.2"
+ elliptic "^6.5.2"
+ ethereum-cryptography "^0.1.3"
+ ethjs-util "^0.1.3"
+ rlp "^2.0.0"
+ safe-buffer "^5.1.1"
+
+ethereumjs-util@^6.0.0:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69"
+ integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==
+ dependencies:
+ "@types/bn.js" "^4.11.3"
+ bn.js "^4.11.0"
+ create-hash "^1.1.2"
+ elliptic "^6.5.2"
+ ethereum-cryptography "^0.1.3"
+ ethjs-util "0.1.6"
+ rlp "^2.2.3"
+
+ethers@^5.7.2:
+ version "5.7.2"
+ resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e"
+ integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==
+ dependencies:
+ "@ethersproject/abi" "5.7.0"
+ "@ethersproject/abstract-provider" "5.7.0"
+ "@ethersproject/abstract-signer" "5.7.0"
+ "@ethersproject/address" "5.7.0"
+ "@ethersproject/base64" "5.7.0"
+ "@ethersproject/basex" "5.7.0"
+ "@ethersproject/bignumber" "5.7.0"
+ "@ethersproject/bytes" "5.7.0"
+ "@ethersproject/constants" "5.7.0"
+ "@ethersproject/contracts" "5.7.0"
+ "@ethersproject/hash" "5.7.0"
+ "@ethersproject/hdnode" "5.7.0"
+ "@ethersproject/json-wallets" "5.7.0"
+ "@ethersproject/keccak256" "5.7.0"
+ "@ethersproject/logger" "5.7.0"
+ "@ethersproject/networks" "5.7.1"
+ "@ethersproject/pbkdf2" "5.7.0"
+ "@ethersproject/properties" "5.7.0"
+ "@ethersproject/providers" "5.7.2"
+ "@ethersproject/random" "5.7.0"
+ "@ethersproject/rlp" "5.7.0"
+ "@ethersproject/sha2" "5.7.0"
+ "@ethersproject/signing-key" "5.7.0"
+ "@ethersproject/solidity" "5.7.0"
+ "@ethersproject/strings" "5.7.0"
+ "@ethersproject/transactions" "5.7.0"
+ "@ethersproject/units" "5.7.0"
+ "@ethersproject/wallet" "5.7.0"
+ "@ethersproject/web" "5.7.1"
+ "@ethersproject/wordlists" "5.7.0"
+
+ethjs-unit@0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699"
+ integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==
+ dependencies:
+ bn.js "4.11.6"
+ number-to-bn "1.7.0"
+
+ethjs-util@0.1.6, ethjs-util@^0.1.3:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536"
+ integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==
+ dependencies:
+ is-hex-prefixed "1.0.0"
+ strip-hex-prefix "1.0.0"
+
+eventemitter3@4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384"
+ integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==
+
+eventemitter3@^4.0.7:
+ version "4.0.7"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
+ integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
+
+events@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
+ integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
+
+evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
+ integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
+ dependencies:
+ md5.js "^1.3.4"
+ safe-buffer "^5.1.1"
+
+exception-formatter@^1.0.4:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/exception-formatter/-/exception-formatter-1.0.7.tgz#3291616b86fceabefa97aee6a4708032c6e3b96d"
+ integrity sha512-zV45vEsjytJrwfGq6X9qd1Ll56cW4NC2mhCO6lqwMk4ZpA1fZ6C3UiaQM/X7if+7wZFmCgss3ahp9B/uVFuLRw==
+ dependencies:
+ colors "^1.0.3"
+
+execa@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
+ integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
+ dependencies:
+ cross-spawn "^7.0.3"
+ get-stream "^6.0.0"
+ human-signals "^2.1.0"
+ is-stream "^2.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^4.0.1"
+ onetime "^5.1.2"
+ signal-exit "^3.0.3"
+ strip-final-newline "^2.0.0"
+
+execa@^7.1.1:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-7.1.1.tgz#3eb3c83d239488e7b409d48e8813b76bb55c9c43"
+ integrity sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==
+ dependencies:
+ cross-spawn "^7.0.3"
+ get-stream "^6.0.1"
+ human-signals "^4.3.0"
+ is-stream "^3.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^5.1.0"
+ onetime "^6.0.0"
+ signal-exit "^3.0.7"
+ strip-final-newline "^3.0.0"
+
+express@^4.14.0:
+ version "4.18.2"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59"
+ integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==
+ dependencies:
+ accepts "~1.3.8"
+ array-flatten "1.1.1"
+ body-parser "1.20.1"
+ content-disposition "0.5.4"
+ content-type "~1.0.4"
+ cookie "0.5.0"
+ cookie-signature "1.0.6"
+ debug "2.6.9"
+ depd "2.0.0"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ finalhandler "1.2.0"
+ fresh "0.5.2"
+ http-errors "2.0.0"
+ merge-descriptors "1.0.1"
+ methods "~1.1.2"
+ on-finished "2.4.1"
+ parseurl "~1.3.3"
+ path-to-regexp "0.1.7"
+ proxy-addr "~2.0.7"
+ qs "6.11.0"
+ range-parser "~1.2.1"
+ safe-buffer "5.2.1"
+ send "0.18.0"
+ serve-static "1.15.0"
+ setprototypeof "1.2.0"
+ statuses "2.0.1"
+ type-is "~1.6.18"
+ utils-merge "1.0.1"
+ vary "~1.1.2"
+
+ext@^1.1.2:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f"
+ integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==
+ dependencies:
+ type "^2.7.2"
+
+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==
+
+extsprintf@1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
+ integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==
+
+extsprintf@^1.2.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07"
+ integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==
+
+eyes@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0"
+ integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==
+
+fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.9:
+ version "3.2.12"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
+ integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.2"
+ merge2 "^1.3.0"
+ micromatch "^4.0.4"
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+
+fast-levenshtein@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+ integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
+
+fast-redact@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.2.0.tgz#b1e2d39bc731376d28bde844454fa23e26919987"
+ integrity sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==
+
+fast-safe-stringify@^2.0.6:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884"
+ integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==
+
+fast-stable-stringify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313"
+ integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==
+
+fastq@^1.6.0:
+ version "1.15.0"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a"
+ integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
+ dependencies:
+ reusify "^1.0.4"
+
+faye-websocket@0.11.4:
+ version "0.11.4"
+ resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da"
+ integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==
+ dependencies:
+ websocket-driver ">=0.5.1"
+
+file-entry-cache@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
+ integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
+ dependencies:
+ flat-cache "^3.0.4"
+
+file-uri-to-path@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
+ integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+filter-obj@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b"
+ integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==
+
+finalhandler@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32"
+ integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
+ dependencies:
+ debug "2.6.9"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ on-finished "2.4.1"
+ parseurl "~1.3.3"
+ statuses "2.0.1"
+ unpipe "~1.0.0"
+
+find-root@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4"
+ integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==
+
+find-up@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+ dependencies:
+ locate-path "^5.0.0"
+ path-exists "^4.0.0"
+
+find-up@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
+ integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
+ dependencies:
+ locate-path "^6.0.0"
+ path-exists "^4.0.0"
+
+firebase@^9.22.1:
+ version "9.22.1"
+ resolved "https://registry.yarnpkg.com/firebase/-/firebase-9.22.1.tgz#9bf49d8cb87eefae6500cc2bd2ec1fddbc1c1ebb"
+ integrity sha512-8x55ZZJwPlctKIhlfXL+KTOpdabp6dDpDwTEmuW1QNbfCkE1ZEuXHgjiQMfTkoeyQO9luV6YwVdgbgCt7yfYCg==
+ dependencies:
+ "@firebase/analytics" "0.10.0"
+ "@firebase/analytics-compat" "0.2.6"
+ "@firebase/app" "0.9.11"
+ "@firebase/app-check" "0.8.0"
+ "@firebase/app-check-compat" "0.3.7"
+ "@firebase/app-compat" "0.2.11"
+ "@firebase/app-types" "0.9.0"
+ "@firebase/auth" "0.23.2"
+ "@firebase/auth-compat" "0.4.2"
+ "@firebase/database" "0.14.4"
+ "@firebase/database-compat" "0.3.4"
+ "@firebase/firestore" "3.12.1"
+ "@firebase/firestore-compat" "0.3.10"
+ "@firebase/functions" "0.10.0"
+ "@firebase/functions-compat" "0.3.5"
+ "@firebase/installations" "0.6.4"
+ "@firebase/installations-compat" "0.2.4"
+ "@firebase/messaging" "0.12.4"
+ "@firebase/messaging-compat" "0.2.4"
+ "@firebase/performance" "0.6.4"
+ "@firebase/performance-compat" "0.2.4"
+ "@firebase/remote-config" "0.4.4"
+ "@firebase/remote-config-compat" "0.2.4"
+ "@firebase/storage" "0.11.2"
+ "@firebase/storage-compat" "0.3.2"
+ "@firebase/util" "1.9.3"
+
+flat-cache@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
+ integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
+ dependencies:
+ flatted "^3.1.0"
+ rimraf "^3.0.2"
+
+flatted@^3.1.0:
+ version "3.2.7"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787"
+ integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
+
+follow-redirects@^1.14.0, follow-redirects@^1.15.0:
+ version "1.15.2"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
+ integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
+
+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==
+ dependencies:
+ is-callable "^1.1.3"
+
+forever-agent@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+ integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==
+
+form-data@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
+ integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
+form-data@~2.3.2:
+ 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==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.6"
+ mime-types "^2.1.12"
+
+forwarded@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
+ integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
+
+fp-ts@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.1.1.tgz#c910544499d7c959351bb4260ee7c44a544084c1"
+ integrity sha512-YcWhMdDCFCja0MmaDroTgNu+NWWrrnUEn92nvDgrtVy9Z71YFnhNVIghoHPt8gs82ijoMzFGeWKvArbyICiJgw==
+
+fraction.js@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950"
+ integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==
+
+fresh@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+ integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
+
+fs-extra@^4.0.2:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
+ integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-minipass@^1.2.7:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
+ integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==
+ dependencies:
+ minipass "^2.6.0"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
+ integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
+
+fsevents@~2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
+ integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
+
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+function.prototype.name@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621"
+ integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.19.0"
+ functions-have-names "^1.2.2"
+
+functions-have-names@^1.2.2, functions-have-names@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
+ integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
+
+get-caller-file@^2.0.1, get-caller-file@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82"
+ integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==
+ dependencies:
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-proto "^1.0.1"
+ has-symbols "^1.0.3"
+
+get-nonce@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3"
+ integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==
+
+get-stream@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
+ integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
+ dependencies:
+ pump "^3.0.0"
+
+get-stream@^5.1.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
+ integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
+ dependencies:
+ pump "^3.0.0"
+
+get-stream@^6.0.0, get-stream@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
+ integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
+
+get-symbol-description@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6"
+ integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.1.1"
+
+get-tsconfig@^4.5.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.6.0.tgz#e977690993a42f3e320e932427502a40f7af6d05"
+ integrity sha512-lgbo68hHTQnFddybKbbs/RDRJnJT5YyGy2kQzVwbq+g67X73i+5MVTval34QxGkOe9X5Ujf1UYpCaphLyltjEg==
+ dependencies:
+ resolve-pkg-maps "^1.0.0"
+
+getpass@^0.1.1:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
+ integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==
+ dependencies:
+ assert-plus "^1.0.0"
+
+glob-parent@^5.1.2, glob-parent@~5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob-parent@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
+ integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
+ dependencies:
+ is-glob "^4.0.3"
+
+glob@7.1.7:
+ version "7.1.7"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
+ integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^6.0.1:
+ version "6.0.4"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22"
+ integrity sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==
+ dependencies:
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "2 || 3"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.1.3:
+ version "7.2.3"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
+ integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.1.1"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+global@~4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406"
+ integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==
+ dependencies:
+ min-document "^2.19.0"
+ process "^0.11.10"
+
+globals@^13.19.0:
+ version "13.20.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82"
+ integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==
+ dependencies:
+ type-fest "^0.20.2"
+
+globalthis@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf"
+ integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==
+ dependencies:
+ define-properties "^1.1.3"
+
+globby@^11.1.0:
+ version "11.1.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
+ integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
+ dependencies:
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.2.9"
+ ignore "^5.2.0"
+ merge2 "^1.4.1"
+ slash "^3.0.0"
+
+globby@^13.1.3:
+ version "13.1.4"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-13.1.4.tgz#2f91c116066bcec152465ba36e5caa4a13c01317"
+ integrity sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==
+ dependencies:
+ dir-glob "^3.0.1"
+ fast-glob "^3.2.11"
+ ignore "^5.2.0"
+ merge2 "^1.4.1"
+ slash "^4.0.0"
+
+goober@^2.1.10:
+ version "2.1.13"
+ resolved "https://registry.yarnpkg.com/goober/-/goober-2.1.13.tgz#e3c06d5578486212a76c9eba860cbc3232ff6d7c"
+ integrity sha512-jFj3BQeleOoy7t93E9rZ2de+ScC4lQICLwiAQmKMg9F6roKGaLSHoCDYKkWlSafg138jejvq/mTdvmnwDQgqoQ==
+
+google-libphonenumber@^3.2.27:
+ version "3.2.32"
+ resolved "https://registry.yarnpkg.com/google-libphonenumber/-/google-libphonenumber-3.2.32.tgz#63c48a9c247b64a3bc2eec21bdf3fcfbf2e148c0"
+ integrity sha512-mcNgakausov/B/eTgVeX8qc8IwWjRrupk9UzZZ/QDEvdh5fAjE7Aa211bkZpZj42zKkeS6MTT8avHUwjcLxuGQ==
+
+gopd@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
+ integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
+ dependencies:
+ get-intrinsic "^1.1.3"
+
+got@9.6.0:
+ version "9.6.0"
+ resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
+ integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==
+ dependencies:
+ "@sindresorhus/is" "^0.14.0"
+ "@szmarczak/http-timer" "^1.1.2"
+ cacheable-request "^6.0.0"
+ decompress-response "^3.3.0"
+ duplexer3 "^0.1.4"
+ get-stream "^4.1.0"
+ lowercase-keys "^1.0.1"
+ mimic-response "^1.0.1"
+ p-cancelable "^1.0.0"
+ to-readable-stream "^1.0.0"
+ url-parse-lax "^3.0.0"
+
+got@^11.8.5:
+ version "11.8.6"
+ resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a"
+ integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==
+ dependencies:
+ "@sindresorhus/is" "^4.0.0"
+ "@szmarczak/http-timer" "^4.0.5"
+ "@types/cacheable-request" "^6.0.1"
+ "@types/responselike" "^1.0.0"
+ cacheable-lookup "^5.0.3"
+ cacheable-request "^7.0.2"
+ decompress-response "^6.0.0"
+ http2-wrapper "^1.0.0-beta.5.2"
+ lowercase-keys "^2.0.0"
+ p-cancelable "^2.0.0"
+ responselike "^2.0.0"
+
+graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.4:
+ version "4.2.11"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
+ integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
+
+graphemer@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
+ integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
+
+har-schema@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
+ integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==
+
+har-validator@~5.1.3:
+ version "5.1.5"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd"
+ integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
+ dependencies:
+ ajv "^6.12.3"
+ har-schema "^2.0.0"
+
+has-bigints@^1.0.1, has-bigints@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa"
+ integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+has-property-descriptors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861"
+ integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==
+ dependencies:
+ get-intrinsic "^1.1.1"
+
+has-proto@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0"
+ integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==
+
+has-symbols@^1.0.2, has-symbols@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
+ integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+
+has-tostringtag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
+ integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
+ dependencies:
+ has-symbols "^1.0.2"
+
+has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+hash-base@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33"
+ integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==
+ dependencies:
+ inherits "^2.0.4"
+ readable-stream "^3.6.0"
+ safe-buffer "^5.2.0"
+
+hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
+ integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
+ dependencies:
+ inherits "^2.0.3"
+ minimalistic-assert "^1.0.1"
+
+hey-listen@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68"
+ integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==
+
+hmac-drbg@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
+ integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==
+ dependencies:
+ hash.js "^1.0.3"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.1"
+
+hoist-non-react-statics@^3.3.1:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
+ integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
+ dependencies:
+ react-is "^16.7.0"
+
+http-cache-semantics@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a"
+ integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==
+
+http-errors@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
+ integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
+ dependencies:
+ depd "2.0.0"
+ inherits "2.0.4"
+ setprototypeof "1.2.0"
+ statuses "2.0.1"
+ toidentifier "1.0.1"
+
+http-https@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b"
+ integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==
+
+http-parser-js@>=0.5.1:
+ version "0.5.8"
+ resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3"
+ integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==
+
+http-signature@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
+ integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==
+ dependencies:
+ assert-plus "^1.0.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
+http2-wrapper@^1.0.0-beta.5.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d"
+ integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==
+ dependencies:
+ quick-lru "^5.1.1"
+ resolve-alpn "^1.0.0"
+
+human-signals@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
+ integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
+
+human-signals@^4.3.0:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2"
+ integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==
+
+humanize-ms@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed"
+ integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==
+ dependencies:
+ ms "^2.0.0"
+
+iconv-lite@0.4.24:
+ 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"
+
+idb@7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/idb/-/idb-7.0.1.tgz#d2875b3a2f205d854ee307f6d196f246fea590a7"
+ integrity sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==
+
+idb@7.1.1:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b"
+ integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==
+
+idna-uts46-hx@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9"
+ integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==
+ dependencies:
+ punycode "2.1.0"
+
+ieee754@^1.1.13, ieee754@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
+ integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
+
+ignore@^5.2.0:
+ version "5.2.4"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
+ integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
+
+immutable@^4.0.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.0.tgz#eb1738f14ffb39fd068b1dbe1296117484dd34be"
+ integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==
+
+import-fresh@^3.0.0, import-fresh@^3.2.1:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
+ integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.4:
+ version "2.0.4"
+ resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+internal-slot@^1.0.3, internal-slot@^1.0.4, internal-slot@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986"
+ integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==
+ dependencies:
+ get-intrinsic "^1.2.0"
+ has "^1.0.3"
+ side-channel "^1.0.4"
+
+invariant@^2.2.4:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
+ integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
+ dependencies:
+ loose-envify "^1.0.0"
+
+io-ts@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-2.0.1.tgz#1261c12f915c2f48d16393a36966636b48a45aa1"
+ integrity sha512-RezD+WcCfW4VkMkEcQWL/Nmy/nqsWTvTYg7oUmTGzglvSSV2P9h2z1PVeREPFf0GWNzruYleAt1XCMQZSg1xxQ==
+
+ipaddr.js@1.9.1:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
+ integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
+
+is-arguments@^1.0.4, is-arguments@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
+ integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-array-buffer@^3.0.1, is-array-buffer@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe"
+ integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.2.0"
+ is-typed-array "^1.1.10"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
+
+is-base64@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-base64/-/is-base64-1.1.0.tgz#8ce1d719895030a457c59a7dcaf39b66d99d56b4"
+ integrity sha512-Nlhg7Z2dVC4/PTvIFkgVVNvPHSO2eR/Yd0XzhGiXCXEvWnptXlXa/clQ8aePPiMuxEGcWfzWbGw2Fe3d+Y3v1g==
+
+is-bigint@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
+ integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
+ dependencies:
+ has-bigints "^1.0.1"
+
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-boolean-object@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
+ integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
+ integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
+
+is-core-module@^2.11.0:
+ version "2.12.1"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd"
+ integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==
+ dependencies:
+ has "^1.0.3"
+
+is-core-module@^2.9.0:
+ version "2.11.0"
+ resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz"
+ integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==
+ dependencies:
+ has "^1.0.3"
+
+is-date-object@^1.0.1, is-date-object@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
+ integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-docker@^2.0.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
+ integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
+
+is-docker@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200"
+ integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+is-function@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08"
+ integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==
+
+is-generator-function@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72"
+ integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-hex-prefixed@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554"
+ integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==
+
+is-inside-container@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4"
+ integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==
+ dependencies:
+ is-docker "^3.0.0"
+
+is-map@^2.0.1, is-map@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127"
+ integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==
+
+is-negative-zero@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
+ integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
+
+is-number-object@^1.0.4:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc"
+ integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-path-inside@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
+ integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
+
+is-regex@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
+ integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-set@^2.0.1, is-set@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec"
+ integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==
+
+is-shared-array-buffer@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79"
+ integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==
+ dependencies:
+ call-bind "^1.0.2"
+
+is-stream@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
+ integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
+
+is-stream@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac"
+ integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==
+
+is-string@^1.0.5, is-string@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
+ integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-symbol@^1.0.2, is-symbol@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
+ integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
+ dependencies:
+ has-symbols "^1.0.2"
+
+is-typed-array@^1.1.10, is-typed-array@^1.1.3, is-typed-array@^1.1.9:
+ version "1.1.10"
+ resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f"
+ integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==
+ dependencies:
+ available-typed-arrays "^1.0.5"
+ call-bind "^1.0.2"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-tostringtag "^1.0.0"
+
+is-typedarray@1.0.0, is-typedarray@^1.0.0, is-typedarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+ integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==
+
+is-weakmap@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2"
+ integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==
+
+is-weakref@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
+ integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
+ dependencies:
+ call-bind "^1.0.2"
+
+is-weakset@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d"
+ integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.1.1"
+
+is-wsl@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
+ integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
+ dependencies:
+ is-docker "^2.0.0"
+
+isarray@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
+ integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+
+isomorphic-ws@5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf"
+ integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==
+
+isomorphic-ws@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc"
+ integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==
+
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+ integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==
+
+jayson@^3.4.4:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/jayson/-/jayson-3.7.0.tgz#b735b12d06d348639ae8230d7a1e2916cb078f25"
+ integrity sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==
+ dependencies:
+ "@types/connect" "^3.4.33"
+ "@types/node" "^12.12.54"
+ "@types/ws" "^7.4.4"
+ JSONStream "^1.3.5"
+ commander "^2.20.3"
+ delay "^5.0.0"
+ es6-promisify "^5.0.0"
+ eyes "^0.1.8"
+ isomorphic-ws "^4.0.1"
+ json-stringify-safe "^5.0.1"
+ lodash "^4.17.20"
+ uuid "^8.3.2"
+ ws "^7.4.5"
+
+js-sha3@0.8.0, js-sha3@^0.8.0:
+ version "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.5.7:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7"
+ integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==
+
+"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
+ integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
+ dependencies:
+ argparse "^2.0.1"
+
+jsbn@~0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
+ integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==
+
+json-buffer@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
+ integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==
+
+json-buffer@3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
+ integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
+
+json-parse-even-better-errors@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
+ integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
+
+json-rpc-engine@6.1.0, json-rpc-engine@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz#bf5ff7d029e1c1bf20cb6c0e9f348dcd8be5a393"
+ integrity sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==
+ dependencies:
+ "@metamask/safe-event-emitter" "^2.0.0"
+ eth-rpc-errors "^4.0.2"
+
+json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8"
+ integrity sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-schema@0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5"
+ integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==
+
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
+
+json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+ integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
+
+json5@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
+ integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
+ dependencies:
+ minimist "^1.2.0"
+
+jsonfile@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
+ integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsonparse@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
+ integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==
+
+jsprim@^1.2.2:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb"
+ integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==
+ dependencies:
+ assert-plus "1.0.0"
+ extsprintf "1.3.0"
+ json-schema "0.4.0"
+ verror "1.10.0"
+
+"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3:
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea"
+ integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==
+ dependencies:
+ array-includes "^3.1.5"
+ object.assign "^4.1.3"
+
+keccak@^3.0.0, keccak@^3.0.1:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276"
+ integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==
+ dependencies:
+ node-addon-api "^2.0.0"
+ node-gyp-build "^4.2.0"
+ readable-stream "^3.6.0"
+
+keyv@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
+ integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==
+ dependencies:
+ json-buffer "3.0.0"
+
+keyv@^4.0.0:
+ version "4.5.2"
+ resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56"
+ integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==
+ dependencies:
+ json-buffer "3.0.1"
+
+keyvaluestorage-interface@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff"
+ integrity sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==
+
+language-subtag-registry@~0.3.2:
+ version "0.3.22"
+ resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d"
+ integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==
+
+language-tags@=1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a"
+ integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==
+ dependencies:
+ language-subtag-registry "~0.3.2"
+
+levn@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
+ integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
+ dependencies:
+ prelude-ls "^1.2.1"
+ type-check "~0.4.0"
+
+lines-and-columns@^1.1.6:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
+ integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+
+lit-element@^3.3.0:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-3.3.2.tgz#9913bf220b85065f0e5f1bb8878cc44f36b50cfa"
+ integrity sha512-xXAeVWKGr4/njq0rGC9dethMnYCq5hpKYrgQZYTzawt9YQhMiXfD+T1RgrdY3NamOxwq2aXlb0vOI6e29CKgVQ==
+ dependencies:
+ "@lit-labs/ssr-dom-shim" "^1.1.0"
+ "@lit/reactive-element" "^1.3.0"
+ lit-html "^2.7.0"
+
+lit-html@^2.7.0:
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-2.7.4.tgz#6d75001977c206683685b9d76594a516afda2954"
+ integrity sha512-/Jw+FBpeEN+z8X6PJva5n7+0MzCVAH2yypN99qHYYkq8bI+j7I39GH+68Z/MZD6rGKDK9RpzBw7CocfmHfq6+g==
+ dependencies:
+ "@types/trusted-types" "^2.0.2"
+
+lit@2.7.4:
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/lit/-/lit-2.7.4.tgz#ca63d27fda178dbffae0faf2c882b9910e40842c"
+ integrity sha512-cgD7xrZoYr21mbrkZIuIrj98YTMw/snJPg52deWVV4A8icLyNHI3bF70xsJeAgwTuiq5Kkd+ZR8gybSJDCPB7g==
+ dependencies:
+ "@lit/reactive-element" "^1.6.0"
+ lit-element "^3.3.0"
+ lit-html "^2.7.0"
+
+locate-path@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
+ dependencies:
+ p-locate "^4.1.0"
+
+locate-path@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
+ integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
+ dependencies:
+ p-locate "^5.0.0"
+
+lodash.camelcase@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+ integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==
+
+lodash.isequal@4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
+ integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==
+
+lodash.merge@^4.6.2:
+ version "4.6.2"
+ resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
+ integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+
+lodash@^4.17.20:
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+long@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
+ integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
+
+long@^5.0.0:
+ version "5.2.3"
+ resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1"
+ integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==
+
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+lowercase-keys@^1.0.0, lowercase-keys@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
+ integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
+
+lowercase-keys@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
+ integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+md5.js@^1.3.4:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
+ integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+media-query-parser@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/media-query-parser/-/media-query-parser-2.0.2.tgz#ff79e56cee92615a304a1c2fa4f2bd056c0a1d29"
+ integrity sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+
+media-typer@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
+ integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
+
+merge-descriptors@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
+ integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
+
+merge-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
+ integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
+
+merge2@^1.3.0, merge2@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+methods@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+ integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
+
+micromatch@^4.0.4:
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
+ integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
+ dependencies:
+ braces "^3.0.2"
+ picomatch "^2.3.1"
+
+miller-rabin@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
+ integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
+ dependencies:
+ bn.js "^4.0.0"
+ brorand "^1.0.1"
+
+mime-db@1.52.0:
+ version "1.52.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
+ integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
+
+mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34:
+ version "2.1.35"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
+ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
+ dependencies:
+ mime-db "1.52.0"
+
+mime@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
+mimic-fn@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+mimic-fn@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc"
+ integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==
+
+mimic-response@^1.0.0, 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==
+
+mimic-response@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
+ integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
+
+min-document@^2.19.0:
+ version "2.19.0"
+ resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
+ integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==
+ dependencies:
+ dom-walk "^0.1.0"
+
+minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
+ integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
+
+minimalistic-crypto-utils@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
+ integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==
+
+"minimatch@2 || 3", minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist@^1.2.0, minimist@^1.2.6:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
+ integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
+
+minipass@^2.6.0, minipass@^2.9.0:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
+ integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==
+ dependencies:
+ safe-buffer "^5.1.2"
+ yallist "^3.0.0"
+
+minizlib@^1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
+ integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==
+ dependencies:
+ minipass "^2.9.0"
+
+mkdirp-promise@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1"
+ integrity sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==
+ dependencies:
+ mkdirp "*"
+
+mkdirp@*:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50"
+ integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==
+
+mkdirp@^0.5.5, mkdirp@~0.5.1:
+ version "0.5.6"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
+ integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
+ dependencies:
+ minimist "^1.2.6"
+
+mock-fs@^4.1.0:
+ version "4.14.0"
+ resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18"
+ integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==
+
+moment@^2.10.6:
+ version "2.29.4"
+ resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108"
+ integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==
+
+motion@10.15.5:
+ version "10.15.5"
+ resolved "https://registry.yarnpkg.com/motion/-/motion-10.15.5.tgz#d336ddbdd37bc28bb99fbb243fe309df6c685ad6"
+ integrity sha512-ejP6KioN4pigTGxL93APzOnvtLklParL59UQB2T3HWXQBxFcIp5/7YXFmkgiA6pNKKzjvnLhnonRBN5iSFMnNw==
+ dependencies:
+ "@motionone/animation" "^10.15.1"
+ "@motionone/dom" "^10.15.5"
+ "@motionone/svelte" "^10.15.5"
+ "@motionone/types" "^10.15.1"
+ "@motionone/utils" "^10.15.1"
+ "@motionone/vue" "^10.15.5"
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
+
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+ms@2.1.3, ms@^2.0.0, ms@^2.1.1:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
+multibase@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b"
+ integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==
+ dependencies:
+ base-x "^3.0.8"
+ buffer "^5.5.0"
+
+multibase@~0.6.0:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b"
+ integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==
+ dependencies:
+ base-x "^3.0.8"
+ buffer "^5.5.0"
+
+multicodec@^0.5.5:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd"
+ integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==
+ dependencies:
+ varint "^5.0.0"
+
+multicodec@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f"
+ integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==
+ dependencies:
+ buffer "^5.6.0"
+ varint "^5.0.0"
+
+multiformats@^9.4.2:
+ version "9.9.0"
+ resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37"
+ integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==
+
+multihashes@^0.4.15, multihashes@~0.4.15:
+ version "0.4.21"
+ resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5"
+ integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==
+ dependencies:
+ buffer "^5.5.0"
+ multibase "^0.7.0"
+ varint "^5.0.0"
+
+mv@~2:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/mv/-/mv-2.1.1.tgz#ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2"
+ integrity sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==
+ dependencies:
+ mkdirp "~0.5.1"
+ ncp "~2.0.0"
+ rimraf "~2.4.0"
+
+nan@^2.14.0:
+ version "2.17.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb"
+ integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==
+
+nano-json-stream-parser@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f"
+ integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==
+
+nanoid@^3.3.4:
+ version "3.3.6"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
+ integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
+ integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
+
+ncp@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3"
+ integrity sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==
+
+negotiator@0.6.3:
+ version "0.6.3"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
+ integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
+
+next-tick@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb"
+ integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==
+
+next@^13.4.2:
+ version "13.4.4"
+ resolved "https://registry.yarnpkg.com/next/-/next-13.4.4.tgz#d1027c8d77f4c51be0b39f671b4820db03c93e60"
+ integrity sha512-C5S0ysM0Ily9McL4Jb48nOQHT1BukOWI59uC3X/xCMlYIh9rJZCv7nzG92J6e1cOBqQbKovlpgvHWFmz4eKKEA==
+ dependencies:
+ "@next/env" "13.4.4"
+ "@swc/helpers" "0.5.1"
+ busboy "1.6.0"
+ caniuse-lite "^1.0.30001406"
+ postcss "8.4.14"
+ styled-jsx "5.1.1"
+ zod "3.21.4"
+ optionalDependencies:
+ "@next/swc-darwin-arm64" "13.4.4"
+ "@next/swc-darwin-x64" "13.4.4"
+ "@next/swc-linux-arm64-gnu" "13.4.4"
+ "@next/swc-linux-arm64-musl" "13.4.4"
+ "@next/swc-linux-x64-gnu" "13.4.4"
+ "@next/swc-linux-x64-musl" "13.4.4"
+ "@next/swc-win32-arm64-msvc" "13.4.4"
+ "@next/swc-win32-ia32-msvc" "13.4.4"
+ "@next/swc-win32-x64-msvc" "13.4.4"
+
+node-addon-api@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32"
+ integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==
+
+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==
+
+node-fetch@2.6.7:
+ version "2.6.7"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
+ integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
+ dependencies:
+ whatwg-url "^5.0.0"
+
+node-fetch@^2.6.11, node-fetch@^2.6.7:
+ version "2.6.11"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25"
+ integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==
+ dependencies:
+ whatwg-url "^5.0.0"
+
+node-gyp-build@^4.2.0, node-gyp-build@^4.3.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055"
+ integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==
+
+node-releases@^2.0.12:
+ version "2.0.12"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.12.tgz#35627cc224a23bfb06fb3380f2b3afaaa7eb1039"
+ integrity sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+normalize-range@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
+ integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
+
+normalize-url@^4.1.0:
+ version "4.5.1"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a"
+ integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==
+
+normalize-url@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
+ integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
+
+npm-run-path@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
+ integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
+ dependencies:
+ path-key "^3.0.0"
+
+npm-run-path@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00"
+ integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==
+ dependencies:
+ path-key "^4.0.0"
+
+number-to-bn@1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0"
+ integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==
+ dependencies:
+ bn.js "4.11.6"
+ strip-hex-prefix "1.0.0"
+
+oauth-sign@~0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
+ integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
+
+object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
+
+object-inspect@^1.12.3, object-inspect@^1.9.0:
+ version "1.12.3"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9"
+ integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==
+
+object-is@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
+ integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
+object-keys@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+object.assign@^4.1.3, object.assign@^4.1.4:
+ version "4.1.4"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f"
+ integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ has-symbols "^1.0.3"
+ object-keys "^1.1.1"
+
+object.entries@^1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23"
+ integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
+
+object.fromentries@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73"
+ integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
+
+object.hasown@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92"
+ integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==
+ dependencies:
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
+
+object.values@^1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d"
+ integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
+
+oboe@2.1.5:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd"
+ integrity sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==
+ dependencies:
+ http-https "^1.0.0"
+
+on-exit-leak-free@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz#b39c9e3bf7690d890f4861558b0d7b90a442d209"
+ integrity sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==
+
+on-finished@2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
+ integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
+ dependencies:
+ ee-first "1.1.1"
+
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
+ integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
+ dependencies:
+ wrappy "1"
+
+onetime@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
+ integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
+ dependencies:
+ mimic-fn "^2.1.0"
+
+onetime@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4"
+ integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==
+ dependencies:
+ mimic-fn "^4.0.0"
+
+open@^9.1.0:
+ version "9.1.0"
+ resolved "https://registry.yarnpkg.com/open/-/open-9.1.0.tgz#684934359c90ad25742f5a26151970ff8c6c80b6"
+ integrity sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==
+ dependencies:
+ default-browser "^4.0.0"
+ define-lazy-prop "^3.0.0"
+ is-inside-container "^1.0.0"
+ is-wsl "^2.2.0"
+
+optionator@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
+ integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
+ dependencies:
+ deep-is "^0.1.3"
+ fast-levenshtein "^2.0.6"
+ levn "^0.4.1"
+ prelude-ls "^1.2.1"
+ type-check "^0.4.0"
+ word-wrap "^1.2.3"
+
+outdent@^0.8.0:
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.8.0.tgz#2ebc3e77bf49912543f1008100ff8e7f44428eb0"
+ integrity sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==
+
+p-cancelable@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
+ integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==
+
+p-cancelable@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf"
+ integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==
+
+p-limit@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+ dependencies:
+ p-try "^2.0.0"
+
+p-limit@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
+ dependencies:
+ yocto-queue "^0.1.0"
+
+p-locate@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
+ dependencies:
+ p-limit "^2.2.0"
+
+p-locate@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
+ integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
+ dependencies:
+ p-limit "^3.0.2"
+
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+parse-asn1@^5.0.0, parse-asn1@^5.1.5:
+ version "5.1.6"
+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4"
+ integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==
+ dependencies:
+ asn1.js "^5.2.0"
+ browserify-aes "^1.0.0"
+ evp_bytestokey "^1.0.0"
+ pbkdf2 "^3.0.3"
+ safe-buffer "^5.1.1"
+
+parse-headers@^2.0.0:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9"
+ integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==
+
+parse-json@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
+ integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ error-ex "^1.3.1"
+ json-parse-even-better-errors "^2.3.0"
+ lines-and-columns "^1.1.6"
+
+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==
+
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
+ integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
+
+path-key@^3.0.0, path-key@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+path-key@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18"
+ integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==
+
+path-parse@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+path-to-regexp@0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
+ integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
+
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
+pbkdf2@^3.0.17, pbkdf2@^3.0.3:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075"
+ integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==
+ 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"
+
+performance-now@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
+ integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==
+
+picocolors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
+ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+pify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
+ integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==
+
+pify@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f"
+ integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==
+
+pino-abstract-transport@v0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz#4b54348d8f73713bfd14e3dc44228739aa13d9c0"
+ integrity sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==
+ dependencies:
+ duplexify "^4.1.2"
+ split2 "^4.0.0"
+
+pino-std-serializers@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz#1791ccd2539c091ae49ce9993205e2cd5dbba1e2"
+ integrity sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==
+
+pino@7.11.0:
+ version "7.11.0"
+ resolved "https://registry.yarnpkg.com/pino/-/pino-7.11.0.tgz#0f0ea5c4683dc91388081d44bff10c83125066f6"
+ integrity sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==
+ dependencies:
+ atomic-sleep "^1.0.0"
+ fast-redact "^3.0.0"
+ on-exit-leak-free "^0.2.0"
+ pino-abstract-transport v0.5.0
+ pino-std-serializers "^4.0.0"
+ process-warning "^1.0.0"
+ quick-format-unescaped "^4.0.3"
+ real-require "^0.1.0"
+ safe-stable-stringify "^2.1.0"
+ sonic-boom "^2.2.1"
+ thread-stream "^0.15.1"
+
+pngjs@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb"
+ integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==
+
+postcss-value-parser@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
+ integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
+
+postcss@8.4.14:
+ version "8.4.14"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf"
+ integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==
+ dependencies:
+ nanoid "^3.3.4"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
+preact@^10.12.0, preact@^10.5.9:
+ version "10.15.1"
+ resolved "https://registry.yarnpkg.com/preact/-/preact-10.15.1.tgz#a1de60c9fc0c79a522d969c65dcaddc5d994eede"
+ integrity sha512-qs2ansoQEwzNiV5eAcRT1p1EC/dmEzaATVDJNiB3g2sRDWdA7b7MurXdJjB2+/WQktGWZwxvDrnuRFbWuIr64g==
+
+prelude-ls@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
+ integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+
+prepend-http@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
+ integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==
+
+process-warning@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616"
+ integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==
+
+process@^0.11.10:
+ version "0.11.10"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+ integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
+
+prop-types@^15.6.2, prop-types@^15.8.1:
+ version "15.8.1"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
+ integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
+ dependencies:
+ loose-envify "^1.4.0"
+ object-assign "^4.1.1"
+ react-is "^16.13.1"
+
+protobufjs@^6.11.3:
+ version "6.11.3"
+ resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74"
+ integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==
+ 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" "^4.0.1"
+ "@types/node" ">=13.7.0"
+ long "^4.0.0"
+
+protobufjs@^7.0.0:
+ version "7.2.3"
+ resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.3.tgz#01af019e40d9c6133c49acbb3ff9e30f4f0f70b2"
+ integrity sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==
+ 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/node" ">=13.7.0"
+ long "^5.0.0"
+
+proxy-addr@~2.0.7:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
+ integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
+ dependencies:
+ forwarded "0.2.0"
+ ipaddr.js "1.9.1"
+
+proxy-compare@2.5.1:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-2.5.1.tgz#17818e33d1653fbac8c2ec31406bce8a2966f600"
+ integrity sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==
+
+proxy-from-env@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
+ integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
+
+psl@^1.1.28:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7"
+ integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==
+
+public-encrypt@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
+ integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
+ dependencies:
+ bn.js "^4.1.0"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ parse-asn1 "^5.0.0"
+ randombytes "^2.0.1"
+ safe-buffer "^5.1.2"
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+punycode@2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d"
+ integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==
+
+punycode@^2.1.0, punycode@^2.1.1:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f"
+ integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
+
+qrcode@1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.0.tgz#95abb8a91fdafd86f8190f2836abbfc500c72d1b"
+ integrity sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ==
+ dependencies:
+ dijkstrajs "^1.0.1"
+ encode-utf8 "^1.0.3"
+ pngjs "^5.0.0"
+ yargs "^15.3.1"
+
+qrcode@1.5.3, qrcode@^1.5.1:
+ version "1.5.3"
+ resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170"
+ integrity sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==
+ dependencies:
+ dijkstrajs "^1.0.1"
+ encode-utf8 "^1.0.3"
+ pngjs "^5.0.0"
+ yargs "^15.3.1"
+
+qs@6.11.0:
+ version "6.11.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
+ integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
+ dependencies:
+ side-channel "^1.0.4"
+
+qs@^6.10.3:
+ version "6.11.2"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9"
+ integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==
+ dependencies:
+ side-channel "^1.0.4"
+
+qs@~6.5.2:
+ version "6.5.3"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad"
+ integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==
+
+query-string@7.1.3:
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328"
+ integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==
+ dependencies:
+ decode-uri-component "^0.2.2"
+ filter-obj "^1.1.0"
+ split-on-first "^1.0.0"
+ strict-uri-encode "^2.0.0"
+
+query-string@^5.0.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb"
+ integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==
+ dependencies:
+ decode-uri-component "^0.2.0"
+ object-assign "^4.1.0"
+ strict-uri-encode "^1.0.0"
+
+query-string@^6.13.5:
+ version "6.14.1"
+ resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a"
+ integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==
+ dependencies:
+ decode-uri-component "^0.2.0"
+ filter-obj "^1.1.0"
+ split-on-first "^1.0.0"
+ strict-uri-encode "^2.0.0"
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+quick-format-unescaped@^4.0.3:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7"
+ integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==
+
+quick-lru@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
+ integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
+
+randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
+ integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
+ dependencies:
+ safe-buffer "^5.1.0"
+
+randomfill@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
+ integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
+ dependencies:
+ randombytes "^2.0.5"
+ safe-buffer "^5.1.0"
+
+range-parser@~1.2.1:
+ version "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.5.1:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
+ integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
+ dependencies:
+ bytes "3.1.2"
+ http-errors "2.0.0"
+ iconv-lite "0.4.24"
+ unpipe "1.0.0"
+
+raw-body@2.5.2:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a"
+ integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==
+ dependencies:
+ bytes "3.1.2"
+ http-errors "2.0.0"
+ iconv-lite "0.4.24"
+ unpipe "1.0.0"
+
+react-dom@18.2.0:
+ version "18.2.0"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
+ integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
+ dependencies:
+ loose-envify "^1.1.0"
+ scheduler "^0.23.0"
+
+react-firebase-hooks@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/react-firebase-hooks/-/react-firebase-hooks-5.1.1.tgz#fc92bb4b860c6753c806583f64d7f069b6ee6785"
+ integrity sha512-y2UpWs82xs+39q5Rc/wq316ca52QsC0n8m801V+yM4IC4hbfOL4yQPVSh7w+ydstdvjN9F+lvs1WrO2VYxpmdA==
+
+react-hot-toast@^2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/react-hot-toast/-/react-hot-toast-2.4.1.tgz#df04295eda8a7b12c4f968e54a61c8d36f4c0994"
+ integrity sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==
+ dependencies:
+ goober "^2.1.10"
+
+react-icons@^4.9.0:
+ version "4.9.0"
+ resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.9.0.tgz#ba44f436a053393adb1bdcafbc5c158b7b70d2a3"
+ integrity sha512-ijUnFr//ycebOqujtqtV9PFS7JjhWg0QU6ykURVHuL4cbofvRCf3f6GMn9+fBktEFQOIVZnuAYLZdiyadRQRFg==
+
+react-is@^16.13.1, react-is@^16.7.0:
+ version "16.13.1"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
+ integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+
+react-is@^18.2.0:
+ version "18.2.0"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
+ integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
+
+react-remove-scroll-bar@^2.3.3:
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz#53e272d7a5cb8242990c7f144c44d8bd8ab5afd9"
+ integrity sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==
+ dependencies:
+ react-style-singleton "^2.2.1"
+ tslib "^2.0.0"
+
+react-remove-scroll@2.5.4:
+ version "2.5.4"
+ resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz#afe6491acabde26f628f844b67647645488d2ea0"
+ integrity sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==
+ dependencies:
+ react-remove-scroll-bar "^2.3.3"
+ react-style-singleton "^2.2.1"
+ tslib "^2.1.0"
+ use-callback-ref "^1.3.0"
+ use-sidecar "^1.1.2"
+
+react-style-singleton@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4"
+ integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==
+ dependencies:
+ get-nonce "^1.0.0"
+ invariant "^2.2.4"
+ tslib "^2.0.0"
+
+react-transition-group@^4.4.5:
+ version "4.4.5"
+ resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1"
+ integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==
+ dependencies:
+ "@babel/runtime" "^7.5.5"
+ dom-helpers "^5.0.1"
+ loose-envify "^1.4.0"
+ prop-types "^15.6.2"
+
+react@18.2.0:
+ version "18.2.0"
+ resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
+ integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
+ dependencies:
+ loose-envify "^1.1.0"
+
+readable-stream@^3.1.1, readable-stream@^3.5.0, readable-stream@^3.6.0:
+ version "3.6.2"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
+ integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readdirp@~3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
+ dependencies:
+ picomatch "^2.2.1"
+
+real-require@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381"
+ integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==
+
+regenerator-runtime@^0.13.11:
+ version "0.13.11"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
+ integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
+
+regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb"
+ integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.2.0"
+ functions-have-names "^1.2.3"
+
+request@^2.79.0:
+ version "2.88.2"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
+ integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
+ dependencies:
+ aws-sign2 "~0.7.0"
+ aws4 "^1.8.0"
+ caseless "~0.12.0"
+ combined-stream "~1.0.6"
+ extend "~3.0.2"
+ forever-agent "~0.6.1"
+ form-data "~2.3.2"
+ har-validator "~5.1.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.19"
+ oauth-sign "~0.9.0"
+ performance-now "^2.1.0"
+ qs "~6.5.2"
+ safe-buffer "^5.1.2"
+ tough-cookie "~2.5.0"
+ tunnel-agent "^0.6.0"
+ uuid "^3.3.2"
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
+ integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
+
+require-main-filename@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
+ integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
+resolve-alpn@^1.0.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9"
+ integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve-pkg-maps@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f"
+ integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==
+
+resolve@^1.19.0, resolve@^1.22.1:
+ version "1.22.2"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f"
+ integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==
+ dependencies:
+ is-core-module "^2.11.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+resolve@^2.0.0-next.4:
+ version "2.0.0-next.4"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660"
+ integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==
+ dependencies:
+ is-core-module "^2.9.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+responselike@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
+ integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==
+ dependencies:
+ lowercase-keys "^1.0.0"
+
+responselike@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc"
+ integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==
+ dependencies:
+ lowercase-keys "^2.0.0"
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rimraf@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
+ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
+ dependencies:
+ glob "^7.1.3"
+
+rimraf@~2.4.0:
+ version "2.4.5"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da"
+ integrity sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==
+ dependencies:
+ glob "^6.0.1"
+
+ripemd160@^2.0.0, ripemd160@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
+ integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+
+rlp@^2.0.0, rlp@^2.2.3:
+ version "2.2.7"
+ resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf"
+ integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==
+ dependencies:
+ bn.js "^5.2.0"
+
+rpc-websockets@^7.5.1:
+ version "7.5.1"
+ resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-7.5.1.tgz#e0a05d525a97e7efc31a0617f093a13a2e10c401"
+ integrity sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==
+ dependencies:
+ "@babel/runtime" "^7.17.2"
+ eventemitter3 "^4.0.7"
+ uuid "^8.3.2"
+ ws "^8.5.0"
+ optionalDependencies:
+ bufferutil "^4.0.1"
+ utf-8-validate "^5.0.2"
+
+run-applescript@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-5.0.0.tgz#e11e1c932e055d5c6b40d98374e0268d9b11899c"
+ integrity sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==
+ dependencies:
+ execa "^5.0.0"
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+rxjs@^6.6.3:
+ version "6.6.7"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
+ integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==
+ dependencies:
+ tslib "^1.9.0"
+
+safe-buffer@5.2.1, safe-buffer@>=5.1.0, 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.1, safe-buffer@~5.2.0:
+ version "5.2.1"
+ resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+safe-buffer@~5.1.0:
+ 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-json-stringify@~1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz#356e44bc98f1f93ce45df14bcd7c01cda86e0afd"
+ integrity sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==
+
+safe-json-utils@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/safe-json-utils/-/safe-json-utils-1.1.1.tgz#0e883874467d95ab914c3f511096b89bfb3e63b1"
+ integrity sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ==
+
+safe-regex-test@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295"
+ integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.1.3"
+ is-regex "^1.1.4"
+
+safe-stable-stringify@^2.1.0:
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886"
+ integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==
+
+"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, 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==
+
+sass@^1.62.1:
+ version "1.62.1"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.62.1.tgz#caa8d6bf098935bc92fc73fa169fb3790cacd029"
+ integrity sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==
+ dependencies:
+ chokidar ">=3.0.0 <4.0.0"
+ immutable "^4.0.0"
+ source-map-js ">=0.6.2 <2.0.0"
+
+scheduler@^0.23.0:
+ version "0.23.0"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe"
+ integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==
+ dependencies:
+ loose-envify "^1.1.0"
+
+scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312"
+ integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==
+
+secp256k1@^4.0.1:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303"
+ integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==
+ dependencies:
+ elliptic "^6.5.4"
+ node-addon-api "^2.0.0"
+ node-gyp-build "^4.2.0"
+
+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==
+
+semver@^7.3.5, semver@^7.3.7, semver@^7.3.8:
+ version "7.5.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec"
+ integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==
+ dependencies:
+ lru-cache "^6.0.0"
+
+send@0.18.0:
+ version "0.18.0"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
+ integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
+ dependencies:
+ debug "2.6.9"
+ depd "2.0.0"
+ destroy "1.2.0"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "2.0.0"
+ mime "1.6.0"
+ ms "2.1.3"
+ on-finished "2.4.1"
+ range-parser "~1.2.1"
+ statuses "2.0.1"
+
+serve-static@1.15.0:
+ version "1.15.0"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
+ integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
+ dependencies:
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ parseurl "~1.3.3"
+ send "0.18.0"
+
+servify@^0.1.12:
+ version "0.1.12"
+ resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95"
+ integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==
+ dependencies:
+ body-parser "^1.16.0"
+ cors "^2.8.1"
+ express "^4.14.0"
+ request "^2.79.0"
+ xhr "^2.3.3"
+
+set-blocking@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
+
+setimmediate@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+ integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==
+
+setprototypeof@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
+ integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
+
+sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8:
+ version "2.4.11"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
+ integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+shebang-command@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+ dependencies:
+ shebang-regex "^3.0.0"
+
+shebang-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+side-channel@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
+ integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
+ dependencies:
+ call-bind "^1.0.0"
+ get-intrinsic "^1.0.2"
+ object-inspect "^1.9.0"
+
+signal-exit@^3.0.3, signal-exit@^3.0.7:
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
+ integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
+
+simple-concat@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
+ integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
+
+simple-get@^2.7.0:
+ version "2.8.2"
+ resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.2.tgz#5708fb0919d440657326cd5fe7d2599d07705019"
+ integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==
+ dependencies:
+ decompress-response "^3.3.0"
+ once "^1.3.1"
+ simple-concat "^1.0.0"
+
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
+slash@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7"
+ integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==
+
+sonic-boom@^2.2.1:
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.8.0.tgz#c1def62a77425090e6ad7516aad8eb402e047611"
+ integrity sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==
+ dependencies:
+ atomic-sleep "^1.0.0"
+
+"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
+ integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
+
+source-map@^0.5.7:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
+
+split-on-first@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f"
+ integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==
+
+split2@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4"
+ integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==
+
+sshpk@^1.7.0:
+ version "1.17.0"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5"
+ integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==
+ dependencies:
+ asn1 "~0.2.3"
+ assert-plus "^1.0.0"
+ bcrypt-pbkdf "^1.0.0"
+ dashdash "^1.12.0"
+ ecc-jsbn "~0.1.1"
+ getpass "^0.1.1"
+ jsbn "~0.1.0"
+ safer-buffer "^2.0.2"
+ tweetnacl "~0.14.0"
+
+statuses@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
+ integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
+
+stop-iteration-iterator@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4"
+ integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==
+ dependencies:
+ internal-slot "^1.0.4"
+
+stream-browserify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f"
+ integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==
+ dependencies:
+ inherits "~2.0.4"
+ readable-stream "^3.5.0"
+
+stream-shift@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
+ integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
+
+streamsearch@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764"
+ integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==
+
+strict-uri-encode@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
+ integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==
+
+strict-uri-encode@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"
+ integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==
+
+string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+ version "4.2.3"
+ resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+string.prototype.matchall@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3"
+ integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
+ get-intrinsic "^1.1.3"
+ has-symbols "^1.0.3"
+ internal-slot "^1.0.3"
+ regexp.prototype.flags "^1.4.3"
+ side-channel "^1.0.4"
+
+string.prototype.trim@^1.2.7:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533"
+ integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
+
+string.prototype.trimend@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533"
+ integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
+
+string.prototype.trimstart@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4"
+ integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
+
+string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
+strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
+strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+ integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
+
+strip-final-newline@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
+ integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
+
+strip-final-newline@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd"
+ integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==
+
+strip-hex-prefix@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f"
+ integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==
+ dependencies:
+ is-hex-prefixed "1.0.0"
+
+strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
+ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+
+styled-jsx@5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f"
+ integrity sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==
+ dependencies:
+ client-only "0.0.1"
+
+stylis@4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51"
+ integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==
+
+superstruct@^0.14.2:
+ version "0.14.2"
+ resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.14.2.tgz#0dbcdf3d83676588828f1cf5ed35cda02f59025b"
+ integrity sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==
+
+superstruct@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-1.0.3.tgz#de626a5b49c6641ff4d37da3c7598e7a87697046"
+ integrity sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+ dependencies:
+ has-flag "^4.0.0"
+
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
+swarm-js@^0.1.40:
+ version "0.1.42"
+ resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.42.tgz#497995c62df6696f6e22372f457120e43e727979"
+ integrity sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ==
+ dependencies:
+ bluebird "^3.5.0"
+ buffer "^5.0.5"
+ eth-lib "^0.1.26"
+ fs-extra "^4.0.2"
+ got "^11.8.5"
+ mime-types "^2.1.16"
+ mkdirp-promise "^5.0.1"
+ mock-fs "^4.1.0"
+ setimmediate "^1.0.5"
+ tar "^4.0.2"
+ xhr-request "^1.0.1"
+
+synckit@^0.8.5:
+ version "0.8.5"
+ resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3"
+ integrity sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==
+ dependencies:
+ "@pkgr/utils" "^2.3.1"
+ tslib "^2.5.0"
+
+tapable@^2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
+ integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
+
+tar@^4.0.2:
+ version "4.4.19"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3"
+ integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==
+ dependencies:
+ chownr "^1.1.4"
+ fs-minipass "^1.2.7"
+ minipass "^2.9.0"
+ minizlib "^1.3.3"
+ mkdirp "^0.5.5"
+ safe-buffer "^5.2.1"
+ yallist "^3.1.1"
+
+text-encoding-utf-8@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13"
+ integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==
+
+text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+ integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
+
+thread-stream@^0.15.1:
+ version "0.15.2"
+ resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-0.15.2.tgz#fb95ad87d2f1e28f07116eb23d85aba3bc0425f4"
+ integrity sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==
+ dependencies:
+ real-require "^0.1.0"
+
+"through@>=2.2.7 <3":
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
+
+timed-out@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
+ integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==
+
+titleize@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53"
+ integrity sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
+
+to-readable-stream@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771"
+ integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+toggle-selection@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32"
+ integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==
+
+toidentifier@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
+ integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
+
+tough-cookie@~2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
+ integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
+ dependencies:
+ psl "^1.1.28"
+ punycode "^2.1.1"
+
+tr46@~0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
+ integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
+
+tsconfig-paths@^3.14.1:
+ version "3.14.2"
+ resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088"
+ integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==
+ dependencies:
+ "@types/json5" "^0.0.29"
+ json5 "^1.0.2"
+ minimist "^1.2.6"
+ strip-bom "^3.0.0"
+
+tslib@1.14.1, tslib@^1.8.1, tslib@^1.9.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
+ integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
+
+tslib@^2.0.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338"
+ integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==
+
+tslib@^2.1.0:
+ version "2.4.1"
+ resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz"
+ integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==
+
+tsutils@^3.21.0:
+ version "3.21.0"
+ resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
+ integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
+ dependencies:
+ tslib "^1.8.1"
+
+tunnel-agent@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
+ integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==
+ dependencies:
+ safe-buffer "^5.0.1"
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+ version "0.14.5"
+ resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+ integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==
+
+type-check@^0.4.0, type-check@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
+ integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
+ dependencies:
+ prelude-ls "^1.2.1"
+
+type-fest@^0.20.2:
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
+ integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
+
+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==
+ dependencies:
+ media-typer "0.3.0"
+ mime-types "~2.1.24"
+
+type@^1.0.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
+ integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
+
+type@^2.7.2:
+ version "2.7.2"
+ resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0"
+ integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==
+
+typed-array-length@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb"
+ integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==
+ dependencies:
+ call-bind "^1.0.2"
+ for-each "^0.3.3"
+ is-typed-array "^1.1.9"
+
+typedarray-to-buffer@3.1.5, typedarray-to-buffer@^3.1.5:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
+ integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
+ dependencies:
+ is-typedarray "^1.0.0"
+
+typescript@^5.0.4:
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b"
+ integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==
+
+uint8arrays@^3.0.0, uint8arrays@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0"
+ integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==
+ dependencies:
+ multiformats "^9.4.2"
+
+ultron@~1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
+ integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==
+
+unbox-primitive@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e"
+ integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==
+ dependencies:
+ call-bind "^1.0.2"
+ has-bigints "^1.0.2"
+ has-symbols "^1.0.3"
+ which-boxed-primitive "^1.0.2"
+
+underscore@1.12.1:
+ version "1.12.1"
+ resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e"
+ integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==
+
+underscore@>1.4.4:
+ version "1.13.6"
+ resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441"
+ integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==
+
+universalify@^0.1.0:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
+ integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+
+unpipe@1.0.0, unpipe@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+ integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
+
+untildify@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b"
+ integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
+
+update-browserslist-db@^1.0.11:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940"
+ integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==
+ dependencies:
+ escalade "^3.1.1"
+ picocolors "^1.0.0"
+
+uri-js@^4.2.2:
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
+ dependencies:
+ punycode "^2.1.0"
+
+url-parse-lax@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
+ integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==
+ dependencies:
+ prepend-http "^2.0.0"
+
+url-set-query@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339"
+ integrity sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==
+
+use-callback-ref@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.0.tgz#772199899b9c9a50526fedc4993fc7fa1f7e32d5"
+ integrity sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==
+ dependencies:
+ tslib "^2.0.0"
+
+use-sidecar@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2"
+ integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==
+ dependencies:
+ detect-node-es "^1.1.0"
+ tslib "^2.0.0"
+
+use-sync-external-store@1.2.0, use-sync-external-store@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a"
+ integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==
+
+utf-8-validate@^5.0.2:
+ version "5.0.10"
+ resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2"
+ integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==
+ dependencies:
+ node-gyp-build "^4.3.0"
+
+utf8@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1"
+ integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==
+
+util-deprecate@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
+
+util@^0.12.0, util@^0.12.4:
+ version "0.12.5"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc"
+ integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==
+ dependencies:
+ inherits "^2.0.3"
+ is-arguments "^1.0.4"
+ is-generator-function "^1.0.7"
+ is-typed-array "^1.1.3"
+ which-typed-array "^1.1.2"
+
+utils-merge@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
+ integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
+
+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==
+
+uuid@^3.3.2:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
+ integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
+
+uuid@^8.3.2:
+ version "8.3.2"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
+ integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
+
+valtio@1.10.5:
+ version "1.10.5"
+ resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.10.5.tgz#7852125e3b774b522827d96bd9c76d285c518678"
+ integrity sha512-jTp0k63VXf4r5hPoaC6a6LCG4POkVSh629WLi1+d5PlajLsbynTMd7qAgEiOSPxzoX5iNvbN7iZ/k/g29wrNiQ==
+ dependencies:
+ proxy-compare "2.5.1"
+ use-sync-external-store "1.2.0"
+
+varint@^5.0.0:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4"
+ integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==
+
+vary@^1, vary@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
+ integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
+
+verror@1.10.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
+ integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==
+ dependencies:
+ assert-plus "^1.0.0"
+ core-util-is "1.0.2"
+ extsprintf "^1.2.0"
+
+viem@^0.3.40:
+ version "0.3.40"
+ resolved "https://registry.yarnpkg.com/viem/-/viem-0.3.40.tgz#557134ffee56ed5159e566d870ba74599ac1366c"
+ integrity sha512-IVOaJVXUXxqRjgDNHx21R69nJ4Q4AAxpkjWRtjtBKNJFPCPzjYwBuzxZX0T0FW581fT/BwrlXxZtdHrQ1wbfdw==
+ dependencies:
+ "@adraffy/ens-normalize" "1.9.0"
+ "@noble/curves" "1.0.0"
+ "@noble/hashes" "1.3.0"
+ "@scure/bip32" "1.3.0"
+ "@scure/bip39" "1.2.0"
+ "@wagmi/chains" "0.3.1"
+ abitype "0.8.2"
+ isomorphic-ws "5.0.0"
+ ws "8.12.0"
+
+wagmi@^1.0.5:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/wagmi/-/wagmi-1.0.9.tgz#2483e448720d9ccd013ad0f2943ba7c4dfd775e6"
+ integrity sha512-LIExrD43Kyy8YIG02AQ4+heQc324h4lgTsQcpIDkLcOnwCV24uNSe/Ib1/F2k0N51uUsFoBdB5hjAaT6Ww7AtQ==
+ dependencies:
+ "@tanstack/query-sync-storage-persister" "^4.27.1"
+ "@tanstack/react-query" "^4.28.0"
+ "@tanstack/react-query-persist-client" "^4.28.0"
+ "@wagmi/core" "1.0.8"
+ abitype "0.8.2"
+ use-sync-external-store "^1.2.0"
+
+web3-bzz@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.3.6.tgz#95f370aecc3ff6ad07f057e6c0c916ef09b04dde"
+ integrity sha512-ibHdx1wkseujFejrtY7ZyC0QxQ4ATXjzcNUpaLrvM6AEae8prUiyT/OloG9FWDgFD2CPLwzKwfSQezYQlANNlw==
+ dependencies:
+ "@types/node" "^12.12.6"
+ got "9.6.0"
+ swarm-js "^0.1.40"
+ underscore "1.12.1"
+
+web3-core-helpers@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.3.6.tgz#c478246a9abe4e5456acf42657dac2f7c330be74"
+ integrity sha512-nhtjA2ZbkppjlxTSwG0Ttu6FcPkVu1rCN5IFAOVpF/L0SEt+jy+O5l90+cjDq0jAYvlBwUwnbh2mR9hwDEJCNA==
+ dependencies:
+ underscore "1.12.1"
+ web3-eth-iban "1.3.6"
+ web3-utils "1.3.6"
+
+web3-core-method@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.3.6.tgz#4b0334edd94b03dfec729d113c69a4eb6ebc68ae"
+ integrity sha512-RyegqVGxn0cyYW5yzAwkPlsSEynkdPiegd7RxgB4ak1eKk2Cv1q2x4C7D2sZjeeCEF+q6fOkVmo2OZNqS2iQxg==
+ dependencies:
+ "@ethersproject/transactions" "^5.0.0-beta.135"
+ underscore "1.12.1"
+ web3-core-helpers "1.3.6"
+ web3-core-promievent "1.3.6"
+ web3-core-subscriptions "1.3.6"
+ web3-utils "1.3.6"
+
+web3-core-promievent@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.3.6.tgz#6c27dc79de8f71b74f5d17acaf9aaf593d3cb0c9"
+ integrity sha512-Z+QzfyYDTXD5wJmZO5wwnRO8bAAHEItT1XNSPVb4J1CToV/I/SbF7CuF8Uzh2jns0Cm1109o666H7StFFvzVKw==
+ dependencies:
+ eventemitter3 "4.0.4"
+
+web3-core-requestmanager@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.3.6.tgz#4fea269fe913fd4fca464b4f7c65cb94857b5b2a"
+ integrity sha512-2rIaeuqeo7QN1Eex7aXP0ZqeteJEPWXYFS/M3r3LXMiV8R4STQBKE+//dnHJXoo2ctzEB5cgd+7NaJM8S3gPyA==
+ dependencies:
+ underscore "1.12.1"
+ util "^0.12.0"
+ web3-core-helpers "1.3.6"
+ web3-providers-http "1.3.6"
+ web3-providers-ipc "1.3.6"
+ web3-providers-ws "1.3.6"
+
+web3-core-subscriptions@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.3.6.tgz#ee24e7974d1d72ff6c992c599deba4ef9b308415"
+ integrity sha512-wi9Z9X5X75OKvxAg42GGIf81ttbNR2TxzkAsp1g+nnp5K8mBwgZvXrIsDuj7Z7gx72Y45mWJADCWjk/2vqNu8g==
+ dependencies:
+ eventemitter3 "4.0.4"
+ underscore "1.12.1"
+ web3-core-helpers "1.3.6"
+
+web3-core@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.3.6.tgz#a6a761d1ff2f3ee462b8dab679229d2f8e267504"
+ integrity sha512-gkLDM4T1Sc0T+HZIwxrNrwPg0IfWI0oABSglP2X5ZbBAYVUeEATA0o92LWV8BeF+okvKXLK1Fek/p6axwM/h3Q==
+ dependencies:
+ "@types/bn.js" "^4.11.5"
+ "@types/node" "^12.12.6"
+ bignumber.js "^9.0.0"
+ web3-core-helpers "1.3.6"
+ web3-core-method "1.3.6"
+ web3-core-requestmanager "1.3.6"
+ web3-utils "1.3.6"
+
+web3-eth-abi@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.3.6.tgz#4272ca48d817aa651bbf97b269f5ff10abc2b8a9"
+ integrity sha512-Or5cRnZu6WzgScpmbkvC6bfNxR26hqiKK4i8sMPFeTUABQcb/FU3pBj7huBLYbp9dH+P5W79D2MqwbWwjj9DoQ==
+ dependencies:
+ "@ethersproject/abi" "5.0.7"
+ underscore "1.12.1"
+ web3-utils "1.3.6"
+
+web3-eth-accounts@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.3.6.tgz#f9fcb50b28ee58090ab292a10d996155caa2b474"
+ integrity sha512-Ilr0hG6ONbCdSlVKffasCmNwftD5HsNpwyQASevocIQwHdTlvlwO0tb3oGYuajbKOaDzNTwXfz25bttAEoFCGA==
+ dependencies:
+ crypto-browserify "3.12.0"
+ eth-lib "0.2.8"
+ ethereumjs-common "^1.3.2"
+ ethereumjs-tx "^2.1.1"
+ scrypt-js "^3.0.1"
+ underscore "1.12.1"
+ uuid "3.3.2"
+ web3-core "1.3.6"
+ web3-core-helpers "1.3.6"
+ web3-core-method "1.3.6"
+ web3-utils "1.3.6"
+
+web3-eth-contract@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.3.6.tgz#cccf4d32dc56917fb6923e778498a9ba2a5ba866"
+ integrity sha512-8gDaRrLF2HCg+YEZN1ov0zN35vmtPnGf3h1DxmJQK5Wm2lRMLomz9rsWsuvig3UJMHqZAQKD7tOl3ocJocQsmA==
+ dependencies:
+ "@types/bn.js" "^4.11.5"
+ underscore "1.12.1"
+ web3-core "1.3.6"
+ web3-core-helpers "1.3.6"
+ web3-core-method "1.3.6"
+ web3-core-promievent "1.3.6"
+ web3-core-subscriptions "1.3.6"
+ web3-eth-abi "1.3.6"
+ web3-utils "1.3.6"
+
+web3-eth-ens@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.3.6.tgz#0d28c5d4ea7b4462ef6c077545a77956a6cdf175"
+ integrity sha512-n27HNj7lpSkRxTgSx+Zo7cmKAgyg2ElFilaFlUu/X2CNH23lXfcPm2bWssivH9z0ndhg0OyR4AYFZqPaqDHkJA==
+ dependencies:
+ content-hash "^2.5.2"
+ eth-ens-namehash "2.0.8"
+ underscore "1.12.1"
+ web3-core "1.3.6"
+ web3-core-helpers "1.3.6"
+ web3-core-promievent "1.3.6"
+ web3-eth-abi "1.3.6"
+ web3-eth-contract "1.3.6"
+ web3-utils "1.3.6"
+
+web3-eth-iban@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.3.6.tgz#0d6ba21fe78f190af8919e9cd5453882457209e0"
+ integrity sha512-nfMQaaLA/zsg5W4Oy/EJQbs8rSs1vBAX6b/35xzjYoutXlpHMQadujDx2RerTKhSHqFXSJeQAfE+2f6mdhYkRQ==
+ dependencies:
+ bn.js "^4.11.9"
+ web3-utils "1.3.6"
+
+web3-eth-personal@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.3.6.tgz#226137916754c498f0284f22c55924c87a2efcf0"
+ integrity sha512-pOHU0+/h1RFRYoh1ehYBehRbcKWP4OSzd4F7mDljhHngv6W8ewMHrAN8O1ol9uysN2MuCdRE19qkRg5eNgvzFQ==
+ dependencies:
+ "@types/node" "^12.12.6"
+ web3-core "1.3.6"
+ web3-core-helpers "1.3.6"
+ web3-core-method "1.3.6"
+ web3-net "1.3.6"
+ web3-utils "1.3.6"
+
+web3-eth@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.3.6.tgz#2c650893d540a7a0eb1365dd5b2dca24ac919b7c"
+ integrity sha512-9+rnywRRpyX3C4hfsAQXPQh6vHh9XzQkgLxo3gyeXfbhbShUoq2gFVuy42vsRs//6JlsKdyZS7Z3hHPHz2wreA==
+ dependencies:
+ underscore "1.12.1"
+ web3-core "1.3.6"
+ web3-core-helpers "1.3.6"
+ web3-core-method "1.3.6"
+ web3-core-subscriptions "1.3.6"
+ web3-eth-abi "1.3.6"
+ web3-eth-accounts "1.3.6"
+ web3-eth-contract "1.3.6"
+ web3-eth-ens "1.3.6"
+ web3-eth-iban "1.3.6"
+ web3-eth-personal "1.3.6"
+ web3-net "1.3.6"
+ web3-utils "1.3.6"
+
+web3-net@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.3.6.tgz#a56492e2227475e38db29394f8bac305a2446e41"
+ integrity sha512-KhzU3wMQY/YYjyMiQzbaLPt2kut88Ncx2iqjy3nw28vRux3gVX0WOCk9EL/KVJBiAA/fK7VklTXvgy9dZnnipw==
+ dependencies:
+ web3-core "1.3.6"
+ web3-core-method "1.3.6"
+ web3-utils "1.3.6"
+
+web3-providers-http@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.3.6.tgz#36e8724a7424d52827819d53fd75dbf31f5422c2"
+ integrity sha512-OQkT32O1A06dISIdazpGLveZcOXhEo5cEX6QyiSQkiPk/cjzDrXMw4SKZOGQbbS1+0Vjizm1Hrp7O8Vp2D1M5Q==
+ dependencies:
+ web3-core-helpers "1.3.6"
+ xhr2-cookies "1.1.0"
+
+web3-providers-ipc@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.3.6.tgz#cef8d12c1ebb47adce5ebf597f553c623362cb4a"
+ integrity sha512-+TVsSd2sSVvVgHG4s6FXwwYPPT91boKKcRuEFXqEfAbUC5t52XOgmyc2LNiD9LzPhed65FbV4LqICpeYGUvSwA==
+ dependencies:
+ oboe "2.1.5"
+ underscore "1.12.1"
+ web3-core-helpers "1.3.6"
+
+web3-providers-ws@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.3.6.tgz#e1df617bc89d66165abdf2191da0014c505bfaac"
+ integrity sha512-bk7MnJf5or0Re2zKyhR3L3CjGululLCHXx4vlbc/drnaTARUVvi559OI5uLytc/1k5HKUUyENAxLvetz2G1dnQ==
+ dependencies:
+ eventemitter3 "4.0.4"
+ underscore "1.12.1"
+ web3-core-helpers "1.3.6"
+ websocket "^1.0.32"
+
+web3-shh@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.3.6.tgz#4e3486c7eca5cbdb87f88910948223a5b7ea6c20"
+ integrity sha512-9zRo415O0iBslxBnmu9OzYjNErzLnzOsy+IOvSpIreLYbbAw0XkDWxv3SfcpKnTIWIACBR4AYMIxmmyi5iB3jw==
+ dependencies:
+ web3-core "1.3.6"
+ web3-core-method "1.3.6"
+ web3-core-subscriptions "1.3.6"
+ web3-net "1.3.6"
+
+web3-utils@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.3.6.tgz#390bc9fa3a7179746963cfaca55bb80ac4d8dc10"
+ integrity sha512-hHatFaQpkQgjGVER17gNx8u1qMyaXFZtM0y0XLGH1bzsjMPlkMPLRcYOrZ00rOPfTEuYFOdrpGOqZXVmGrMZRg==
+ dependencies:
+ bn.js "^4.11.9"
+ eth-lib "0.2.8"
+ ethereum-bloom-filters "^1.0.6"
+ ethjs-unit "0.1.6"
+ number-to-bn "1.7.0"
+ randombytes "^2.1.0"
+ underscore "1.12.1"
+ utf8 "3.0.0"
+
+web3@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/web3/-/web3-1.3.6.tgz#599425461c3f9a8cbbefa70616438995f4a064cc"
+ integrity sha512-jEpPhnL6GDteifdVh7ulzlPrtVQeA30V9vnki9liYlUvLV82ZM7BNOQJiuzlDePuE+jZETZSP/0G/JlUVt6pOA==
+ dependencies:
+ web3-bzz "1.3.6"
+ web3-core "1.3.6"
+ web3-eth "1.3.6"
+ web3-eth-personal "1.3.6"
+ web3-net "1.3.6"
+ web3-shh "1.3.6"
+ web3-utils "1.3.6"
+
+webidl-conversions@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
+ integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
+
+websocket-driver@>=0.5.1:
+ version "0.7.4"
+ resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760"
+ integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
+ dependencies:
+ http-parser-js ">=0.5.1"
+ safe-buffer ">=5.1.0"
+ websocket-extensions ">=0.1.1"
+
+websocket-extensions@>=0.1.1:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
+ integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
+
+websocket@^1.0.32:
+ version "1.0.34"
+ resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111"
+ integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==
+ dependencies:
+ bufferutil "^4.0.1"
+ debug "^2.2.0"
+ es5-ext "^0.10.50"
+ typedarray-to-buffer "^3.1.5"
+ utf-8-validate "^5.0.2"
+ yaeti "^0.0.6"
+
+whatwg-fetch@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb"
+ integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==
+
+whatwg-url@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
+ integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
+ dependencies:
+ tr46 "~0.0.3"
+ webidl-conversions "^3.0.0"
+
+which-boxed-primitive@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
+ integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
+ dependencies:
+ is-bigint "^1.0.1"
+ is-boolean-object "^1.1.0"
+ is-number-object "^1.0.4"
+ is-string "^1.0.5"
+ is-symbol "^1.0.3"
+
+which-collection@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906"
+ integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==
+ dependencies:
+ is-map "^2.0.1"
+ is-set "^2.0.1"
+ is-weakmap "^2.0.1"
+ is-weakset "^2.0.1"
+
+which-module@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409"
+ integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==
+
+which-typed-array@^1.1.2, which-typed-array@^1.1.9:
+ version "1.1.9"
+ resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6"
+ integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==
+ dependencies:
+ available-typed-arrays "^1.0.5"
+ call-bind "^1.0.2"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-tostringtag "^1.0.0"
+ is-typed-array "^1.1.10"
+
+which@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+ dependencies:
+ isexe "^2.0.0"
+
+word-wrap@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
+ integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
+
+wrap-ansi@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
+ integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrap-ansi@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
+ integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
+
+ws@7.4.6:
+ version "7.4.6"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
+ integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==
+
+ws@8.12.0:
+ version "8.12.0"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.0.tgz#485074cc392689da78e1828a9ff23585e06cddd8"
+ integrity sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==
+
+ws@^3.0.0:
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2"
+ integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==
+ dependencies:
+ async-limiter "~1.0.0"
+ safe-buffer "~5.1.0"
+ ultron "~1.1.0"
+
+ws@^7.4.0, ws@^7.4.5, ws@^7.5.1:
+ version "7.5.9"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591"
+ integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
+
+ws@^8.5.0:
+ version "8.13.0"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0"
+ integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==
+
+xhr-request-promise@^0.1.2:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c"
+ integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==
+ dependencies:
+ xhr-request "^1.1.0"
+
+xhr-request@^1.0.1, xhr-request@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed"
+ integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==
+ dependencies:
+ buffer-to-arraybuffer "^0.0.5"
+ object-assign "^4.1.1"
+ query-string "^5.0.1"
+ simple-get "^2.7.0"
+ timed-out "^4.0.1"
+ url-set-query "^1.0.0"
+ xhr "^2.0.4"
+
+xhr2-cookies@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48"
+ integrity sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==
+ dependencies:
+ cookiejar "^2.1.1"
+
+xhr@^2.0.4, xhr@^2.3.3:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d"
+ integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==
+ dependencies:
+ global "~4.4.0"
+ is-function "^1.0.1"
+ parse-headers "^2.0.0"
+ xtend "^4.0.0"
+
+xtend@^4.0.0, xtend@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+
+y18n@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf"
+ integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==
+
+y18n@^5.0.5:
+ version "5.0.8"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
+ integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
+
+yaeti@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577"
+ integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==
+
+yallist@^3.0.0, yallist@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yaml@^1.10.0:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
+ integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+
+yargs-parser@^18.1.2:
+ version "18.1.3"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
+ integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs-parser@^20.2.2:
+ version "20.2.9"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
+ integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
+
+yargs-parser@^21.1.1:
+ version "21.1.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
+ integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
+
+yargs@^15.3.1:
+ version "15.4.1"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8"
+ integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==
+ dependencies:
+ cliui "^6.0.0"
+ decamelize "^1.2.0"
+ find-up "^4.1.0"
+ get-caller-file "^2.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^4.2.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^18.1.2"
+
+yargs@^16.2.0:
+ version "16.2.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
+ integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
+ dependencies:
+ cliui "^7.0.2"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.0"
+ y18n "^5.0.5"
+ yargs-parser "^20.2.2"
+
+yargs@^17.7.2:
+ version "17.7.2"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
+ integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
+ dependencies:
+ cliui "^8.0.1"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.3"
+ y18n "^5.0.5"
+ yargs-parser "^21.1.1"
+
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
+
+zod@3.21.4:
+ version "3.21.4"
+ resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db"
+ integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==
+
+zustand@^4.3.1:
+ version "4.3.8"
+ resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.3.8.tgz#37113df8e9e1421b0be1b2dca02b49b76210e7c4"
+ integrity sha512-4h28KCkHg5ii/wcFFJ5Fp+k1J3gJoasaIbppdgZFO4BPJnsNxL0mQXBSFgOgAdCdBj35aDTPvdAJReTMntFPGg==
+ dependencies:
+ use-sync-external-store "1.2.0"